Я пытаюсь найти все ссылки href на веб-странице и заменить ссылку на мою собственную прокси-ссылку.
Например
<a href="http://www.google.com">Google</a>
Должно быть
<a href="http://www.example.com/?loadpage=http://www.google.com">Google</a>
Используйте 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
Документация
DomDocument
– http://php.net/manual/en/class.domdocument.php DomElement
– http://www.php.net/manual/en/class.domelement.php DomElement::getAttribute
– http://www.php.net/manual/en/domelement.getattribute.php DOMElement::setAttribute
– http://www.php.net/manual/en/domelement.setattribute.php urlencode
– http://php.net/manual/en/function.urlencode.php DomDocument::loadHTMLFile
– http://www.php.net/manual/en/domdocument.loadhtmlfile.php Еще один вариант, если вы хотите, чтобы ссылки были заменены на 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 = "