Заменить расположение ссылок (href = '...') - PullRequest
1 голос
/ 23 июня 2010

Я хотел бы заменить местоположение ссылки (тега привязки) страницы следующим образом.

Пример ввода:

text text text <a href='http://test1.com/'> click </a> text text
other text <a class='links' href="gallery.html" title='Look at the gallery'> Gallery</a>
more text

Пример вывода

text text text <a href='http://example.com/p.php?q=http://test1.com/'> click </a> text text
other text <a class='links' href="http://example.com/p.php?q=gallery.html" title='Look at the gallery'> Gallery</a>
more text

Надеюсь, я дал понять.В любом случае я пытаюсь сделать это с помощью PHP и reg-ex.Не могли бы вы зажечь меня с правой.

Спасибо, Сади

Ответы [ 2 ]

9 голосов
/ 23 июня 2010

Не используйте регулярные выражения для анализа HTML.

Используйте встроенный в PHP механизм синтаксического анализа XML.Он хорошо работает на вашем вопросе (и отвечает на вопрос при загрузке):

<?php
  libxml_use_internal_errors(true);  // ignore malformed HTML
  $xml = new DOMDocument();
  $xml->loadHTMLFile("/4070484/zamenit-raspolozhenie-ssylok-href"); 
  foreach($xml->getElementsByTagName('a') as $link) {
   $link->setAttribute('href', "http://www.google.com/?q=" . $link->getAttribute('href'));
  }
  echo $xml->saveHTML();  // output to browser, save to file, etc.
0 голосов
/ 23 июня 2010

Попробуйте использовать str_replace ();

   $string = 'your text';
   $newstring = str_replace ('href="', 'href="http://example.com/p.php?q=', $string);
...