2011-08-22 48 views

回答

0

我无法测试出你的第二个问题,因为我没有在我面前PHP环境,但回答的第一个问题是没有。如果您只处理ASCII字符,则不需要/u

1

这不是模式是否包含utf字符,而是您要匹配的字符串是否。您可能不会查找非ASCII字符,但如果字符串中有任何多字节字符,则您的模式可以与UTF字符中的“额外”字节之一匹配。

+0

虽然多字节序列不包含任何字节的任何7位ASCII代码,但它不是UTF-8的一点吗?因此,如果正则表达式引擎是8位清理的,那么无论多字节内容如何,​​在UTF-8编码的字符串中都不会匹配ASCII字符仍然可以。毕竟,所有的多字节UTF-8序列都具有始终设置第一位的字节。 –

0

接招例如一个字符串匹配/^.$/

var_dump(preg_match('/^.$/u','族')); 
var_dump(preg_match('/^.$/','族')); 

结果:

int(1) 
int(0) 

所以,是的/ U确实有差别,甚至当你在你的模式没有ASCII表之外的字符。

相关问题