【发布时间】:2012-11-08 12:35:13
【问题描述】:
我知道,如果我使用多字节(UTF-8)字符作为模式,我必须使用 mb_ 函数或必须使用 u 选项作为 preg_ 函数的模式。
但是,当我仅对 preg_ 函数的主题使用多字节 (UTF-8) 字符并且仅对模式使用 ascii 字符时,preg_ 函数(没有 u 选项)是否正常工作?
我知道在这种情况下我必须使用mb_ 函数或在模式中添加u 选项:
$str = preg_replace("/$utf8_multibyte_pattern/", '', $str);
我想知道这段代码(u 选项未使用)是否安全:
$ascii_pattern = "[a-zA-Z0-9'$#\\\"%&()\-~|~=!@`{}[]:;+*/.,_<>?_\n\t\r]";
$multibyte_str = preg_replace("/$ascii_pattern/", '', $utf8_multibyte_str);
【问题讨论】:
-
是的,如果你在最后使用
/u(unicode 属性)。看看here。
标签: php preg-replace