DOMDocument和windows-1250编码

时间:2014-11-14 02:27:29

标签: php encoding utf-8 domdocument

所以,我正在编写应该解析不同网站的代码,其中一些使用windows-1250编码,其中一些使用' utf-8'。我对这些网站没有任何影响,你可能会猜到那些带有' windows-1250'让我头痛。所以,这是我使用的代码:

    $doc = new DOMDocument();
        @$doc->loadHTML($response);

        $xpath = new DOMXpath($doc);
        $anchors = $xpath->query("//a[@href]");
        foreach( $anchors as $anchor) {
            $href = $anchor->getAttribute("href");
            $anchor->setAttribute("href", 'http://example.com/');
        }

        $response = $xpath->document->saveHTML();

并且当我尝试运行此脚本时,这是浏览器中的输出:

Warning: DOMDocument::saveHTML(): output conversion failed due to conv error, bytes 0x9A 0x61 0x72 0x6B

那么,有没有办法用' windows-1250'来处理这个错误?编码,这将工作utf-8也?我尝试将utf_encode$response一起使用并通过,但随后国际字符混乱。

1 个答案:

答案 0 :(得分:0)

如果您只是想更改所有锚标签的href,那么您可以使用jquery

代码如下所示:

  //loop through the anchor tags
 $("a").each(function(){//begin each function

  //set the href attributes
  $(this).attr("href","http://example.com/");


  });//end each function

这是一个jsfiddle示例:http://jsfiddle.net/fu5fxawm/1/

如果将鼠标悬停在链接上,您会看到它们已被更改。