aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Alexander <admin@m-a-styles.de>2015-05-18 17:07:02 +0200
committerMarc Alexander <admin@m-a-styles.de>2015-05-18 17:19:29 +0200
commit71f5c9c32715b634d315f79aa11df07be2a9676c (patch)
tree4c0345ab8db037d43acd1769acd18b2bc9419d98
parentc967ba7b9ba42d9cf72cd1bb0927ae5214894eda (diff)
downloadforums-71f5c9c32715b634d315f79aa11df07be2a9676c.tar
forums-71f5c9c32715b634d315f79aa11df07be2a9676c.tar.gz
forums-71f5c9c32715b634d315f79aa11df07be2a9676c.tar.bz2
forums-71f5c9c32715b634d315f79aa11df07be2a9676c.tar.xz
forums-71f5c9c32715b634d315f79aa11df07be2a9676c.zip
[ticket/13832] Use preg_replace_callback instead of /e modifier
PHPBB3-13832
-rw-r--r--phpBB/includes/acp/acp_bbcodes.php4
-rw-r--r--phpBB/includes/bbcode.php22
2 files changed, 23 insertions, 3 deletions
diff --git a/phpBB/includes/acp/acp_bbcodes.php b/phpBB/includes/acp/acp_bbcodes.php
index d451b4d899..9c00e89713 100644
--- a/phpBB/includes/acp/acp_bbcodes.php
+++ b/phpBB/includes/acp/acp_bbcodes.php
@@ -491,7 +491,9 @@ class acp_bbcodes
if (preg_match_all('/(?<!\\\\)\$([0-9]+)/', $replace, $repad))
{
$repad = $pad + sizeof(array_unique($repad[0]));
- $replace = preg_replace('/(?<!\\\\)\$([0-9]+)/e', "'\${' . (\$1 + \$pad) . '}'", $replace);
+ $replace = preg_replace_callback('/(?<!\\\\)\$([0-9]+)/', function ($match) use ($pad) {
+ return '${' . ($match[1] + $pad) . '}';
+ }, $replace);
$pad = $repad;
}
diff --git a/phpBB/includes/bbcode.php b/phpBB/includes/bbcode.php
index 24eaddf067..dce9966efd 100644
--- a/phpBB/includes/bbcode.php
+++ b/phpBB/includes/bbcode.php
@@ -385,7 +385,16 @@ class bbcode
}
// Replace {L_*} lang strings
- $bbcode_tpl = preg_replace('/{L_([A-Z0-9_]+)}/e', "(!empty(\$user->lang['\$1'])) ? \$user->lang['\$1'] : ucwords(strtolower(str_replace('_', ' ', '\$1')))", $bbcode_tpl);
+ $bbcode_tpl = preg_replace_callback('/{L_([A-Z0-9_]+)}/', function ($match) use ($user) {
+ if (!empty($user->lang[$match['1']]))
+ {
+ return $user->lang[$match['1']];
+ }
+ else
+ {
+ return ucwords(strtolower(str_replace('_', ' ', $match['1'])));
+ }
+ }, $bbcode_tpl);
if (!empty($rowset[$bbcode_id]['second_pass_replace']))
{
@@ -509,7 +518,16 @@ class bbcode
'email' => array('{EMAIL}' => '$1', '{DESCRIPTION}' => '$2')
);
- $tpl = preg_replace('/{L_([A-Z0-9_]+)}/e', "(!empty(\$user->lang['\$1'])) ? \$user->lang['\$1'] : ucwords(strtolower(str_replace('_', ' ', '\$1')))", $tpl);
+ $tpl = preg_replace_callback('/{L_([A-Z0-9_]+)}/', function ($match) use ($user) {
+ if (!empty($user->lang[$match['1']]))
+ {
+ return $user->lang[$match['1']];
+ }
+ else
+ {
+ return ucwords(strtolower(str_replace('_', ' ', $match['1'])));
+ }
+ }, $tpl);
if (!empty($replacements[$tpl_name]))
{