无法通过PHP

时间:2017-08-23 10:20:16

标签: 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>

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">

提前致谢!

1 个答案:

答案 0 :(得分:0)

已解决:)

好。如果它很愚蠢但它有效,那么它不是愚蠢的:D

最后添加了以下代码:

$fix = str_replace("href='", 'href="', getContent());
$fix = str_replace("'>", '">', $fix);
echo getHrefFromLinks ($fix);