我似乎无法找到这个问题的直接答案。
如果我的模式不包含ascii范围之外的字符,我需要/ u修饰符吗?文档似乎没有提示。如果匹配的字符串是UTF-8,我仍然会匹配我想要的字符吗?
由于
答案 0 :(得分:1)
不是模式是否包含utf字符,而是你匹配的字符串是否包含。您可能不会查找非ascii字符,但如果字符串中有任何多字节字符,则您的模式可能与UTF字符中的“额外”字节之一匹配。
答案 1 :(得分:0)
我无法测试你的第二个问题,因为我面前没有PHP环境,但第一个问题的答案是否定的。如果您只处理ASCII字符,则不需要/u
。
答案 2 :(得分:0)
例如,匹配单个字符串的/^.$/
。
var_dump( preg_match( '/^.$/u','族' ) );
var_dump( preg_match( '/^.$/','族' ) );
结果:
int(1)
int(0)
即使你的模式中没有ascii表之外的字符,所以是/你确实有所作为。