【发布时间】:2014-01-23 08:46:48
【问题描述】:
我想从字符串中删除一组字符。我正在使用 preg_replace 将 unicode 字符替换为空白。
我有一些 Unicode 字符范围。
它适用于以下代码。
$output = "Clean :this; [cnv\al?id@ non AS]CII äóchar^acters.";
$output = preg_replace('/[\x00-\x1F]|[\x21-\x2C]|[\x3A-\x40]|[\x5B-\x5E]|[\x7B-\x7D]|[\x80-\xBF]|[\x2B0-\x36F]/','', $output);
echo $output;
但它给出了以下代码的错误。
$output = "Clean :this; [cnv\al?id@ non AS]CII äóchar^acters.";
$output = preg_replace('/[\x00-\x1F]|[\x21-\x2C]|[\x3A-\x40]|[\x5B-\x5E]|[\x7B-\x7D]|[\x80-\xBF]|[\x2B0-\x36F]|[\x2000-\x2BFF]|[\x2E00-\x2E7F]|[\x3000-\x303F]|[\x1D000-\x1D24F]|[\x1F600-\x1F77F]|[\x1F000-\x1F0FF]/','', $output);
echo $output;
错误:- preg_replace():编译失败:偏移量 97 处的字符类范围乱序
我可以使用 for 循环从字符串中删除 unicode 字符。所以我需要运行循环以获得更大的范围。
您能否建议我在上面的代码中哪个更好?是for循环还是preg_replace?如果 preg_replace 更好,则需要解决上述错误。
【问题讨论】:
标签: php unicode preg-replace