Найти все hrefs на странице и заменить ссылку, поддерживающую предыдущую ссылку – PHP

Я пытаюсь найти все ссылки href на веб-странице и заменить ссылку на мою собственную прокси-ссылку.

Например

<a href="http://www.google.com">Google</a> 

Должно быть

 <a href="http://www.example.com/?loadpage=http://www.google.com">Google</a> 

Related of "Найти все hrefs на странице и заменить ссылку, поддерживающую предыдущую ссылку – PHP"

Используйте DomDocument PHP для анализа страницы

 $doc = new DOMDocument(); // load the string into the DOM (this is your page's HTML), see below for more info $doc->loadHTML('<a href="http://www.google.com">Google</a>'); //Loop through each <a> tag in the dom and change the href property foreach($doc->getElementsByTagName('a') as $anchor) { $link = $anchor->getAttribute('href'); $link = 'http://www.example.com/?loadpage='.urlencode($link); $anchor->setAttribute('href', $link); } echo $doc->saveHTML(); 

Проверьте это здесь: http://codepad.org/9enqx3Rv

Если у вас нет HTML в виде строки, вы можете использовать cUrl ( docs ), чтобы захватить HTML, или вы можете использовать метод DomDocument для DomDocument

Документация

Еще один вариант, если вы хотите, чтобы ссылки были заменены на jQuery, вы также можете сделать следующее:

 $(document).find('a').each(function(key, element){ curValue = element.attr('href'); element.attr('href', 'http://www.example.com?loadpage='+curValue); }); 

Однако более безопасный способ делает это в php offcourse.

Проще всего я могу это сделать:

 $loader = "http://www.example.com?loadpage="; $page_contents = str_ireplace(array('href="', "href='"), array('href="'.$loader, "href='".$loader), $page_contents); 

Но это может иметь некоторые проблемы с URL-адресами? или &. Или если текст (не код) документа содержит href = "