请参阅下面的脚本:
<?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>
当 echo getHrefFromLinks(getContent()); 运行时,输出为:
/oncelink/index.html<br />/oncelink-2/lucky<br />
这是错误的,因为输出应该是:
/oncelink/index.html<br />/oncelink-2/lucky'locki<br />
据我所知,链接生成的href值在某种程度上是不正确的,因为它包含一个额外的撇号,但我无法在预先生成时更改它。
另一个问题是,我如何获得span标记的值:
<span class="lsbold">
提前致谢!
答案 0 :(得分:0)
已解决:)
好。如果它很愚蠢但它有效,那么它不是愚蠢的:D
最后添加了以下代码:
$fix = str_replace("href='", 'href="', getContent());
$fix = str_replace("'>", '">', $fix);
echo getHrefFromLinks ($fix);