我的MySQL(所有utf8)数据库中都有一些带重音的数据。 像“7hà18H”(法语,意思是早上7点到下午6点)。 在我的php脚本中,我将mysql连接编码设置为utf8,当我将文本收集到“7Hà18H”时,重音在CLI中正确显示(因为我在CLI中运行脚本)。
然后我尝试用
解析表达式preg_match("#[0-9]+H [Àà] [0-9]+H#i", $text);
但是正则表达式并不匹配。 我不明白为什么然后我尝试了这个表达
preg_match("#[0-9]+H [Àà]#i",$text,$matches)
它已经奏效,但比赛是:
array(1) {
[0]=>
string(4) "7H �"
}
带有错误的口音!那么这就是为什么重音后的空间不会被解释为空格,而是可能是错误重音的连续性?
我生气了。感谢您的帮助
答案 0 :(得分:3)
最后,我找到了它。
我必须将选项“u”添加到preg_match中,如
preg_match("#[0-9]+H [Àà] [0-9]+#iu",$text,$matches)
告诉preg_match它是和编码的utf8字符串。我不知道为什么默认情况下没有这样做。也许有人有答案。