当我搜索包含ü,õ,ö或ä字符的单词时,我的正则表达式不会考虑重音字符,因此找不到任何匹配。
$ data是使用strip_tags从HTML标签中剥离的HTML数据,并且包含带有ü,õ,ö和ä字符的单词,这些单词通过CURL从网站加载,字符编码为UTF-8(如返回的标题告诉我);
$data = strip_tags( curl_exec('my_website_url') );
$match = preg_match( '/ü/' , $data , $matches );
我尝试使用以下(也使用'ISO-8859-1'):
mb_internal_encoding("UTF-8");
mb_regex_encoding('UTF-8');
或:
$data = utf8_decode($data)
尚未成功。
答案 0 :(得分:1)
确保您的PHP源文件也是UTF-8编码。
如果是例如ISO-8859-1,则preg_match指令中的ü
将与UTF-8数据中的ü
不同。
答案 1 :(得分:0)
你应该告诉PRCE你正在使用UTF-8,这是通过添加u
修饰符 - >来完成的。 '/ü/u'
。但是如果可能的话,不要将这些字符直接放入源代码中。如果您更改(或编辑将)文件的编码,您的代码将停止工作,并且跟踪它将是非常PITA。我建议,而不是直接使用'/ü/'
将代码中的字符替换为代码:'/\x{c3bc}/u'
- 0xc3bc就是您的来信。