diff options
Diffstat (limited to 'it.class')
-rw-r--r-- | it.class | 27 |
1 files changed, 8 insertions, 19 deletions
@@ -310,35 +310,24 @@ static function toascii($text) * @param $p['casesensitive'] Regex is case sensitive (omit modifier i) * @param $p['multiline'] add modifier m: ^ and $ match \n * @param $p['singleline'] add modifier s: . matches \n - * @param $p['utf8'] add modifier u + * @param $p['utf8'] add modifier u. This is the default if default_charset is utf-8, override with $p['utf8'] = false * @param $p['extended'] add modifier x (non signifcant whitespace) * @return converted regex to use with preg */ static function convertregex($pattern, $p = array()) { - $pattern = preg_replace('|/|', '\/', $pattern); - $modifiers = ''; - - if (!$p['casesensitive']) - $modifiers .= 'i'; - if ($p['exec']) it::fatal("Option exec to it::replace has been removed for security reasons"); - foreach (array( - 'multiline' => 'm', - 'singleline' => 's', - 'utf8' => 'u', - 'extended' => 'x', - ) as $key => $mod) - { - if ($p[$key]) - $modifiers .= $mod; - } - - return "/$pattern/$modifiers"; + return '/' . strtr($pattern, array('/' => '\/')) . '/' . + (!$p['casesensitive'] ? 'i' : '') . + ($p['multiline'] ? 'm' : '') . + ($p['singleline'] ? 's' : '') . + ($p['extended'] ? 'x' : '') . + ((!isset($p['utf8']) && ini_get('default_charset') == 'utf-8' || $p['utf8']) ? 'u' : ''); } + /** * Try to match string against regex. Case insensitive by default. * @param $pattern Regex to match against |