0

假设我有以下内容:

$str1 = "via Tokyo";
$str2 = "via 東京";

我想匹配“via”之后的任何非空白字符。通常我会使用以下内容:

preg_match("/via\s(\S+)/", $str2, $match);

获取匹配的字符。由于不理解 utf8,我认为这不适用于上述情况preg_match,但是在这种情况下它可以完美运行。

这是否正常工作,因为preg_match只是在寻找不是空格的字节,如果是这样,我可以安全地将它用于任何 UTF8 字符吗?

PS我知道我真的应该mb_ereg为此使用这些函数(或完全避免使用PHP),但我正在寻找更好地理解它为什么起作用的原因。谢谢!

4

2 回答 2

1

是的,UTF-8 对特殊的 Unicode 字符使用多字节序列,并且它通过具有高位来保证它们与 ASCII 字符不同(下面)。因此在多字节序列中搜索斜杠、反斜杠或空格永远不会出现误报。

于 2013-06-26T15:57:01.033 回答
0
于 2013-06-26T15:57:43.053 回答