识别PHP中的图像链接

时间:2012-02-02 18:10:56

标签: php regex url

我有一个PHP页面,它通过一些HTML查找链接,并将其替换为指向本地PHP页面的链接;问题是找到图像链接。我目前使用此代码:

$data = preg_replace('|(<a\s*[^>]*href=[\'"]?)|','\1newjs.php?url=', $data);

匹配

之类的内容
<a href="http://google.com">Google</a>

并将用

替换它们
<a href="newjs.php?url=http://google.com">Google</a>

我希望用图像文件(jpg,gif,png)做类似的事情并替换类似的东西:

<a href="http://google.com/hello.png">Image</a>

有了这个:

<a href="newjs.php?url=http://google.com/hello.png&image=1">Image</a>

请注意新网址中的“&amp; image = 1”。我可以使用PHP,最好是使用正则表达式吗?

1 个答案:

答案 0 :(得分:1)

与正常情况一样,涉及正则表达式和HTML:https://stackoverflow.com/a/1732454/118068

正确的解决方案是使用DOM操作:

$dom = new DOMDocument();
$dom->loadHTML(...);
$xp = new DOMXPath($dom);
$anchors = $xp->query('//a');
foreach($anchors as $a) {
   $href = $a->getAttribute('href');
   if (is_image_link($href)) { // 
       $a->setAttribute('href', ... new link here ...);
   }
}