我需要一个UTF-8字符的正则表达式匹配,其中我的PHP文件是ANSI文件。
$regex = "/Number:([\w\-]{0,100})<\/td>/";
搜索文本中的冒号不是普通冒号,而是UTF-8全宽冒号。如果我的PHP文件也是UTF-8那么我可以把特殊字符放入并且没有问题。但是,我的PHP文件是ANSI,由于其他地方的限制,我无法改变它。
正则表达式应该起什么作用?
我们将不胜感激。
答案 0 :(得分:2)
全宽冒号十六进制代码为FF1A
。
在PHP正则表达式中,您可以在正则表达式中使用\x{<HEX>}
表示法。
因此,请使用
\x{FF1A}
匹配单个:
这是short demo:
$re = '/\x{FF1A}\w+/u';
preg_match($re, ":here 123", $m);
print_r($m); // => [0] => :here