为什么我用ord()函数输出这十个数字结果都是226?
使用正则匹配$ii = preg_match("/[①②③④⑤⑥⑦⑧⑨⑩]{3}/",$hh);可以匹配成功,如果不指定{3}就匹配不成功,文件格式是utf-8格式的。
使用正则preg_match_all("/[①②③④⑤⑥⑦⑧⑨⑩]{3}[\x40-\xfe]*。/",$hh,$jj);
$hh="①分别用在两个动作前面,表示动作或情况一经发生就不改变:~定~易│~去~返│~蹶~振。\n②分别用在一个名词和一个动词前面,表示强调或夸张:~言~发│~字~漏│~钱~值│~毛~拔。"
匹配结果为:Array ( [0] => Array ( [0] => ①分别用在两个动作前面,表示动作或情况一经发生就不改变:~定~易│~去~返│~蹶~振。\n②分别用在一个名词和一个动词前面,表示强调或夸张:~言~发│~字~漏│~钱~值│~毛~拔。 ) )
请教高手这种情况该如何处理呢?
使用正则匹配$ii = preg_match("/[①②③④⑤⑥⑦⑧⑨⑩]{3}/",$hh);可以匹配成功,如果不指定{3}就匹配不成功,文件格式是utf-8格式的。
使用正则preg_match_all("/[①②③④⑤⑥⑦⑧⑨⑩]{3}[\x40-\xfe]*。/",$hh,$jj);
$hh="①分别用在两个动作前面,表示动作或情况一经发生就不改变:~定~易│~去~返│~蹶~振。\n②分别用在一个名词和一个动词前面,表示强调或夸张:~言~发│~字~漏│~钱~值│~毛~拔。"
匹配结果为:Array ( [0] => Array ( [0] => ①分别用在两个动作前面,表示动作或情况一经发生就不改变:~定~易│~去~返│~蹶~振。\n②分别用在一个名词和一个动词前面,表示强调或夸张:~言~发│~字~漏│~钱~值│~毛~拔。 ) )
请教高手这种情况该如何处理呢?
$ii = preg_match("/[①②③④⑤⑥⑦⑧⑨⑩]/",$hh);//可以匹配
echo $ii;
preg_match_all("/[①②③④⑤⑥⑦⑧⑨⑩][\x40-\xfe]*。/",$hh,$jj);print_r($jj);页面输出/*******
31Array ( [0] => Array ( [0] => ①分别用在两个动作前面,表示动作或情况一经发生就不改变:~定~易│~去~返│~蹶~振。 [1] => ②分别用在一个名词和一个动词前面,表示强调或夸张:~言~发│~字~漏│~钱~值│~毛~拔。 ) ) ********/
ord返回的是单个字节的ASCII数值,在多字节的情况下只计算返回第一个字节
对于这十个字符,utf-8都是3字节的编码,并且第一个字节ascii值都是226
sorry!
preg_match_all("/[①②③④⑤⑥⑦⑧⑨⑩].*/u",$hh,$jj);用贪婪模式,原来用了非贪婪,只匹配了符号