带有来自mysql db的重音的Php utf8文本出现了正则表达式错误

时间:2015-04-30 03:25:47

标签: php mysql regex

我的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 �"
}

带有错误的口音!那么这就是为什么重音后的空间不会被解释为空格,而是可能是错误重音的连续性?

我生气了。感谢您的帮助

1 个答案:

答案 0 :(得分:3)

最后,我找到了它。

我必须将选项“u”添加到preg_match中,如

preg_match("#[0-9]+H [Àà] [0-9]+#iu",$text,$matches)

告诉preg_match它是和编码的utf8字符串。我不知道为什么默认情况下没有这样做。也许有人有答案。