用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
属性的标记执行相同操作。
我刚刚提供了一些额外的信息,并得到了投票呢?被接受的答案本身提到了str_replace,这是同样的事情,如果你想处理空白等,那么它就不那么强大了...... – 2011-05-09 03:34:31