1
解析從一個網頁鏈接(HREF)請參見下面的我的腳本:無法通過PHP
<?php
function getContent()
{
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, 'http://localhost/test.php/test2.php');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$output=curl_exec($ch);
curl_close($ch);
return $output;
}
function getHrefFromLinks ($cString){
libxml_use_internal_errors(true);
$dom = new DomDocument();
$dom->loadHTML($cString);
$xpath = new DOMXPath($dom);
$nodes = $xpath->query('//a/@href');
foreach($nodes as $href) {
echo $href->nodeValue; echo "<br />"; // echo current attribute value
$href->nodeValue = 'new value'; // set new attribute value
$href->parentNode->removeAttribute('href'); // remove attribute
}
foreach (libxml_get_errors() as $error) {
}
libxml_clear_errors();
}
echo getHrefFromLinks (getContent());
?>
的http://localhost/test.php/test2.php輸出是:
<a href='/oncelink/index.html'><span class="lsbold">Luck</span> Lucky</a><a href='/oncelink-2/lucky'locki'><span class="lsbold">Luck</span>'s Locki</a>
當回聲getHrefFromLinks(的getContent()) ;運行時,輸出爲:
/oncelink/index.html<br />/oncelink-2/lucky<br />
這是錯誤的,因爲輸出應爲:
/oncelink/index.html<br />/oncelink-2/lucky'locki<br />
據我所知,從鏈接生成href值是不知何故不正確的,它包括一個附加的撇號但我無法改變它,因爲它是預先生成的。
的另一個問題是,我怎麼能得到跨度變量的值:
<span class="lsbold">
提前感謝!
你不能指望一個DOM解析器來得到你想要的結果,當你將無效的HTML添加到其中以開始。您的第二個鏈接也只能鏈接到任何現代瀏覽器中的'/ oncelink-2/lucky',並按照指定應用錯誤更正。 – CBroe
感謝您的評論@CBroe,你能提出一個替代方案嗎? –
誰首先生成了破碎的HTML,爲什麼不能要求他們解決這個問題?跳過箍以某種方式嘗試和處理亂七八糟的數據總是不太可取的選項,以實際獲得固定的數據開始... – CBroe