2014-11-14 23 views
-1

因此,我正在編寫應該解析不同網站的代碼,其中一些使用windows-1250編碼,其中一些使用'utf-8'。我對這些網站沒有任何影響,你可能會猜測那些'windows-1250'的網頁讓我很頭疼。所以,這裏是我使用的代碼:DOMDocument和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並通過,但國際字符混亂。

+0

你確定它的'1250'?不是'1251/1252'?無論如何,你可以重現這個問題 – Ghost

+0

好吧,這是直接從頁面 我不確定爲什麼發生這種情況,因爲一些頁面工作真的很好,這種編碼,並在一些我得到這個錯誤.. – Zed

+0

你有一個活的網站,可以檢查,所以我們可以看到最新的問題 – Ghost

回答

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/

如果您將鼠標懸停在鏈接上,您將看到它們已被更改。

+0

實際上我必須這樣做之前頁面在瀏覽器中加載.. – Zed

+0

我現在看到它是有道理的爲什麼你使用PHP –