我希望能夠加載任何html文檔並使用php的domdocument功能對其進行編輯。
問題是,有些網站(例如facebook)會將XML樣式的名稱空間添加到其標籤中。使用PHP DOMDocument難以解析髒的html代碼
<fb:like send="true" width="450" show_faces="true"></fb:like>
DOMDocument對髒代碼非常寬容,但它不會接受html代碼中的namescpaces。什麼情況是:
- 如果我使用loadHTML加載代碼,名稱空間將得到剝離出來,但我需要它留
- 如果我使用的loadXML加載代碼,我會得到噸的錯誤是狀態我沒有加載有效的XML
所以我的想法是將我得到的html轉換成XML,以便我可以使用loadXML解析它。我的問題是,我該如何做到這一點,我應該使用哪種工具(我聽說過Tidy,但我無法讓它工作),還是使用不同的解析器(一種可以處理html中的名稱空間的解析器代碼)
代碼片段:
<?php
$html = file_get_contents($_POST['url']);
$domDoc = new DOMDocument();
$domDoc->loadHTML($html);
//Just do anything here. It doesn't matter what. For example I'm deleting the head tag
$headTag = $domDoc->getElementsByTagName("head")->item(0);
$headTagParent = $headTag->parentNode;
$headTagParent->removeChild($headTag);
echo $domDoc->saveHTML();
//This will work as expected for any url EXCEPT the ones that use XML namespaces like facebook does as described above. In case of such dirty coding the namespace will get deleted by DOMDocument
>
可能重複(http://stackoverflow.com/questions/30076922/convert-html-code-to-doc-using-php- [使用PHP和PHPWord轉換HTML代碼DOC]和-phpword) –
請編輯你的問題,並添加一個HTML/XML的最低範例。 – michi
@Varun Naharia我很抱歉,但這並沒有幫助我。那對我的問題沒有答案。 – Syndace