我需要匹配(不区分大小写)“abcd”和一个可选的商标符号。
正则表达式:/abcd(™)?/gi
请看示例:
preg_match("/abcd(™)?/gi","AbCd™ U9+",$matches);
print_r($matches);
当我运行这个代码时,
$matches
没有被填充任何内容......甚至没有创建一个空数组。有什么想法吗?你的文件采用何种编码方式?PHP在处理Unicode时存在问题。在你的情况下,建议使用转义序列\x99
代替直接嵌入TM符号。
\x99
),而您正在尝试匹配的数据可能被编码为UTF-8(其中™被编码为\xe2\x84\xa2
),或者反之亦然(即您的文件是UTF-8,而您的数据是win-1252)。尝试朝这个方向寻找答案,并提供更多关于您正在做什么的信息。这是多种因素的结合……以下是最终可行的正则表达式:
/abcd(\xe2\x84\xa2)?/i
我不得不移除/g
修饰符并将商标符号更改为\xe2\x84\xa2
。