【问题标题】:preg_match UTF-8 problems unknown symbols instead of Cyrillicpreg_match UTF-8 问题未知符号而不是西里尔字母
【发布时间】:2014-04-22 23:19:34
【问题描述】:

我的脚本工作得很好,但是今天在签入日志后我发现了一些矩阵词,经过分析后我了解到有一些东西是 utf8,文件被解析,标题被提取,但结果而不是俄语单词是 (¡¡¡µÑ€ иалы ТУТ! ¡¡¡µÑ€Ð¸Ð) 未知符号

我用

$cont = "dasdas<title>Сериалы ТУТ! Сериалы онлайн sda</title>";
preg_match("'<title[^>]*?>(.*)</title>'siU", $cont, $match);

//$match[1] = Сериалы ТУТ! СериРsda

当我尝试添加模式修饰符 /u 时,没有任何变化,相同的未知矩阵词。请。

也许 PHP 有问题?

【问题讨论】:

  • Can't reproduce。您是否在一个普通(新鲜)的 php 文件中对此进行测试?
  • 这给了我预期的输出。
  • @HamZa ,是的,当我尝试在在线解析器上重现时,一切正常,但在谷歌中没有任何信息,这就是为什么我认为问题可能不在 preg_match 而是在另一个层面。

标签: regex utf-8 preg-match


【解决方案1】:

这不是 php 或 regex 的问题,而是 html 的问题。要获得正确的显示,您必须在 html 代码的标头中添加 &lt;meta charset="UTF-8"/&gt;

顺便说一句:使用 U 修饰符是没用的:

preg_match('~<title[^>]*>(.*?)</title>~si', $cont, $match);

【讨论】:

    猜你喜欢
    • 2014-11-09
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-26
    • 2012-04-01
    • 2018-04-22
    相关资源
    最近更新 更多