Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: найти все ссылки и заменить
 
 автор: admiral   (03.04.2011 в 23:25)   письмо автору
 
 

нужно найти все значение href="адрес_ссылки" и заменить на свой адрес

  Ответить  
 
 автор: cheops   (03.04.2011 в 23:47)   письмо автору
 
   для: admiral   (03.04.2011 в 23:25)
 

Можно начать отталкиваться от следующего скрипта
<?php
  $text 
'Текст сообщения : нужно найти все значение href="адрес_ссылки" и
заменить на свой адрес'
;
  
$pattern "|href=\"[^\"]+\"|is";
  
$text preg_replace($pattern"href=\"свой_адрес\""$text);
  echo 
$text;
?>

  Ответить  
 
 автор: admiral   (05.04.2011 в 00:18)   письмо автору
 
   для: cheops   (03.04.2011 в 23:47)
 

спасибо. а такой вопрос. как лучше поступить. нужно заменить ссылки, который находятся только в контенте тоесть в <head> их не нужно менять.

  Ответить  
 
 автор: cheops   (05.04.2011 в 00:49)   письмо автору
 
   для: admiral   (05.04.2011 в 00:18)
 

Хм... достаточно ли будет заменить ссылки только в тэгах <a>?

  Ответить  
 
 автор: admiral   (05.04.2011 в 16:07)   письмо автору
 
   для: cheops   (05.04.2011 в 00:49)
 

>Хм... достаточно ли будет заменить ссылки только в тэгах <a>
да, вполне)

  Ответить  
 
 автор: cheops   (05.04.2011 в 18:53)   письмо автору
 
   для: admiral   (05.04.2011 в 16:07)
 

Тогда можно модифицировать скрипт так
  $text = 'Текст сообщения : нужно найти все значение <a href="адрес_ссылки" и 
заменить на свой адрес'; 
  $pattern = "|<a([^>]+)?href=\"[^\"]+\"|is"; 
  $text = preg_replace($pattern, "<a\\1href=\"свой_адрес\"", $text); 
  echo $text; 
?>

  Ответить  
 
 автор: admiral   (06.04.2011 в 21:55)   письмо автору
 
   для: cheops   (05.04.2011 в 18:53)
 

Спасибо. Только возникает ситуации где в сылках вместо двойных кавычек, одинарные href=''. можно ли как-то учесть такой вариант?

  Ответить  
 
 автор: cheops   (06.04.2011 в 22:13)   письмо автору
 
   для: admiral   (06.04.2011 в 21:55)
 

Можно поступить следующим образом
<?php
 $text 
'Текст сообщения : нужно найти все значение <a href="адрес_ссылки">ссылка</a> и  
заменить на свой адрес <a href=\'адрес_ссылки\'>ссылка</a>'
;  
  
$pattern "#<a([^>]+)?href=(\"|')[^\"\']+(\"|')#is";  
  
$text preg_replace($pattern"<a\\1href=\\2свой_адрес\\3"$text);  
  echo 
$text;  
?>

  Ответить  
 
 автор: admiral   (11.04.2011 в 18:18)   письмо автору
 
   для: cheops   (06.04.2011 в 22:13)
 

этот пример неправильно работает, посмотрите пожалуйста

  Ответить  
 
 автор: cheops   (11.04.2011 в 18:45)   письмо автору
 
   для: admiral   (11.04.2011 в 18:18)
 

Хм... у меня правильно работает, в обе ссылки подставился "свой_адрес". У вас что не подверглось замене?

  Ответить  
 
 автор: Tonik992   (05.04.2011 в 01:20)   письмо автору
 
   для: admiral   (05.04.2011 в 00:18)
 

Мне кажется никаких ссылок в <head> не должно быть =) Все используемые ссылки <a...>..</a> только в теле страницы. А что за ссылки такие в head у ВАС?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования