使用PHP Simple HTML DOM Parser时遇到错误

时间:2012-09-18 04:47:22

标签: php parsing

我正在使用PHP Simple HTML DOM Parser来获取网址,但是在获取链接时出错了。看看这个脚本:

$result = str_get_html($result);
foreach($result->find('a') as $element)
$result = str_get_html($result);
$result = str_replace('http://', '', $result);
foreach($result->find('a') as $elementa)
echo $element->href;
echo $elementa->href;

在这里,我想要获取所有链接两次,$element->href中的第一次网址将获取以http://开头的链接,而$elementa->href中的网址将获取不包含http://的链接。

但这只显示一个空白页面。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

$result = str_get_html($result);
$arrWithPrefix = array();
$arrWithoutPrefix = array();
foreach ($result->find('a') as $link) {
    $arrWithPrefix[] = $link->href;
    $arrWithoutPrefix[] = str_replace('http://', '', $link->href);
}
var_dump($arrWithPrefix);
var_dump($arrWithoutPrefix);

未经测试,看看它是否有用:)

答案 1 :(得分:1)

您也可以使用此代码将http:// sitename设置为链接,并返回包含一个链接的所有链接

foreach ($html->find('a') as $e) {
   $cssHrefs = $e -> href;
   preg_match_all('~' . SITE_NAME . '~is', $cssHrefs, $match);
   if (count($match[0]) == 0) {
        $loadedHrefs[] = SITE_NAME . $cssHrefs;
   } else {
        $loadedHrefs[] = $cssHrefs;
}
var_dump($loadedHrefs);

答案 2 :(得分:0)

你也可以试试这个

$result = str_get_html($result);
foreach($result->find('a') as $element){
$result = str_get_html($result);
$result = str_replace('http://', '', $result);
}
foreach($result->find('a') as $elementa){
echo $element->href;
echo $elementa->href;
}