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

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

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

 

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

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

тема: Правка ссылок в тексте
 
 автор: Zilog   (04.06.2012 в 15:15)   письмо автору
 
 

Господа, помогите решить задачу на регулярках. Есть html код, в котором есть относительный ссылки вида href="/abcd/efg/?p=123". Вот задумалось мне поменять их на абсолютные, вставив домен — т.е. на href="http://www.mysite.com/abcd/efg/?p=123".
Как бы сделать задуманное?

Буду премного благодарен, если прокомментируете ответ, дабы попытаться понять как работает сабж.

Спасибо!


вот нашёл:
Выбрать все урлы в HTML странице, те которые не начинаются на http://, т.е. локальные:
preg_match_all("#\s(?:href|src|url)=(?:[\"\'])?(.*?)(?:[\"\'])?(?:[\s\>])#i", $buffer, $matches);


как бы сюда ещё замену прицепить?

  Ответить  
 
 автор: Zilog   (04.06.2012 в 19:39)   письмо автору
 
   для: Zilog   (04.06.2012 в 15:15)
 

Вобщем, методом научного тыка получилась вот такая конструкция:
$pattern = "#\s(?:href|url)=(?:[\"\'])?(\/.*?)(?:[\"\'])#i";
$page  = preg_replace($pattern, ' href="http://www.mysite.ru$1"', $page);


Поправьте меня, если что не так :)

  Ответить  
 
 автор: ladan   (05.06.2012 в 00:32)   письмо автору
 
   для: Zilog   (04.06.2012 в 19:39)
 


<?
$link 
"href=\"/abcd/efg/?p=123\"";

preg_replace("#href=\"(http://www\.mysite\.ru)?(.+?)\"#i","href=\"http://www.mysite.ru$2\"",$link);

preg_replace("#href=\"(.+?)\"#i","href=\"http://www.mysite.ru$1\"",$link); //только если относительные ссылки
?>

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

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