用PHP file_get_contents的输出替换可能的字符串?

问题描述:

我使用PHP从外部网站获取内容。用PHP file_get_contents的输出替换可能的字符串?

我想知道是否有可能从输出中找到并替换字符串,以便我可以使所有链接都是绝对的。

我需要转换“/和“/为“$网址/

如果可以做到这一点,我可以弄清楚如何做休息。我不知道是否有可能。

感谢

对于简单的字符串替换,使用str_replace(),如

$html = str_replace(array("'/", '"/'), array("'$url/", '"' . $url . '/'), $html); 

如果你一个更强大的解决方案后,我建议的HTML字符串加载到一个DOMDocument,以href开头并以/开头,并在写出HTML之前更改每个标签的属性。

$doc = new DOMDocument(); 
$doc->loadHTML($html); 

$xpath = new DOMXPath($doc); 
$anchors = $xpath->query('//*[starts-with(@href, "/")]'); 

foreach ($anchors as $anchor) { 
    $href = $anchor->getAttribute('href'); 
    $anchor->setAttribute('href', $url . $href); 
} 
$html = $doc->saveHTML(); 

您可能会想要为具有src属性的标记执行相同操作。

你也可以使用preg_replace(),尽管DOMDocument解析是最强大的。

+0

我刚刚提供了一些额外的信息,并得到了投票呢?被接受的答案本身提到了str_replace,这是同样的事情,如果你想处理空白等,那么它就不那么强大了...... – 2011-05-09 03:34:31