我需要匹配(不区分大小写)“abcd”和可选的商标符号
正则表达式:/abcd(™)?/gi
参见示例:
preg_match("/abcd(™)?/gi","AbCd™ U9+",$matches);
print_r($matches);
当我运行它时,$matches
没有填充任何内容......甚至没有创建为空数组。有什么想法吗?
答案 0 :(得分:5)
您的文件是如何编码的?在unicode方面,PHP遇到了问题。在您的情况下,请尝试使用转义序列\x99
,而不是直接嵌入TM符号。
答案 1 :(得分:3)
注意:我不是PHP大师。但是,这似乎是关于字符编码的问题。例如,您的PHP文件可以编码为win-1252(其中™编码为\x99
),您尝试匹配的数据可以编码为UTF-8(其中™编码为{{1反之亦然(即你的文件是UTF-8,你的数据是win-1252)。尝试朝这个方向看,并向我们提供有关您正在做的事情的更多信息。
答案 2 :(得分:2)
我怀疑它与文字商标符号有关。
您可能想查看如何使用Unicode with your regular expressions,然后为trademark symbol嵌入转义序列。
答案 3 :(得分:2)
这是事情的组合......这是最终有效的正则表达式:
/abcd(\xe2\x84\xa2)?/i
我必须删除/g
修饰符并将tm符号更改为\xe2\x84\xa2
。