Определить ссылки на изображения в PHP - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть страница 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>

Обратите внимание на '& image = 1' в новом URL. Могу ли я сделать это с помощью PHP, желательно с регулярными выражениями?

1 Ответ

1 голос
/ 02 февраля 2012

Как обычно со всем, что связано с регулярными выражениями и 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 ...);
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...