【问题标题】:Symfony2 Crawler - Use UTF-8 with XPATHSymfony2 Crawler - 使用 UTF-8 和 XPATH
【发布时间】:2013-10-10 09:02:27
【问题描述】:

我正在使用 Symfony2 Crawler - 使用 XPath 的捆绑包。 一切正常,除了编码。

我想使用 UTF-8 编码,而 Crawler 不知何故没有使用它。我注意到因为  被转换为 ,这是一个已知问题:UTF-8 Encoding Issue

我的问题是:如何强制 Symfony Crawler 使用 UTF-8 编码?

这是我正在使用的代码:

$dom_input = new \DOMDocument("1.0","UTF-8");
$dom_input->encoding = "UTF-8";
$dom_input->formatOutput = true;

$dom_input->loadHTMLFile($myFile);

$crawler = new Crawler($dom_input); 
$paragraphs = $crawler->filterXPath('descendant-or-self::p');

现在,当我在做的时候

foreach($paragraphs as $paragraph) {
    var_dump($paragraph->nodeValue);
}

只要我的段落中有 ,我就会得到 

非常感谢您。

【问题讨论】:

  • 我已经回答了here
  • 我担心这对我不起作用。我找到了一种解决方法,使用crawler->addHtmlContent(utf8_decode($dom_input->saveXML()));

标签: php symfony xpath encoding web-crawler


【解决方案1】:

感谢@halfer,我找到了解决方法:

而不是使用

$crawler = new Crawler($dom_input);

我用过:

$crawler = new Crawler();
$crawler->addHtmlContent(utf8_decode($dom_input->saveXML()));

【讨论】:

  • 我想这意味着$dom_input->saveXML() 没有发出 UTF-8,考虑到您是如何设置的,这有点奇怪!不过,如果您确信输入格式不会改变,您的解决方法应该没问题。
猜你喜欢
  • 2015-10-21
  • 2023-03-15
  • 2013-07-20
  • 1970-01-01
  • 1970-01-01
  • 2020-12-09
  • 2017-05-07
  • 1970-01-01
  • 2014-06-26
相关资源
最近更新 更多