【问题标题】:Get all a href links using SimpleHTMLDom library & change these on the 'fly'使用 SimpleHTMLDom 库获取所有 href 链接并在“飞行”中更改这些链接
【发布时间】:2012-04-04 00:09:41
【问题描述】:

我想获取 html 字符串中的所有 a href 链接并将所有链接转换如下:

<a href='www.google.com'>Google</a>

会变成这个样子...

<a href='www.mysite.com/link.php?URL=www.google.com'>Google</a>

谁能建议我如何做到这一点?

<?php

require_once('simple_html_dom.php');

// load the class
$html = new simple_html_dom();

// load the entire string containing everything user entered here

$string = "<html><body><base href='http://www.site.biz/clients/g/'><a href='www.google.co.uk'>Google</a><a href='http://www.yahoo.co.uk'>Yahoo</a></body></html>";
$return = $html->load($string);

$links = $html->find('a');

foreach ($links as $link) 
{
    var_dump($link);
}

?>

【问题讨论】:

  • 作为参考,我强烈建议完全放弃 simple_html_dom。它实际上设法在此处使 PHP 发生段错误,并占用 5 倍的内存,并且以 PHP 内置 DOM 东西的 1/5 速度运行。 (这也不夸张。我通过我拥有的一些测试套件对其进行计时。真实世界时间,而不是基准测试。:P)

标签: php html parsing


【解决方案1】:

你有没有尝试过类似的东西

$links = $html->find('a');

foreach ($links as $link) 
{
    if(isset($link->href))
    {
        $link->href = 'www.mysite.com/link.php?URL=' . $link->href;
    }
}

$newHTML = $html->save();

// $newHTML now contains the modified HTML

【讨论】:

    猜你喜欢
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    相关资源
    最近更新 更多