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

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

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

 

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

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

тема: cURL - замена адресов в загруженной HTML-странице
 
 автор: ddhvvn   (16.12.2006 в 21:54)   письмо автору
 
 

Такая проблема. Использую cURL захожу на страницу, а там картинки и ссылки с относительными путями! Естественно, ни те, ни другие не работают. Ссылки-то мне не очень нужны, а вот чтобы отображались картинки обязательно НУЖНО!

Как это сделать?

   
 
 автор: z0rg   (16.12.2006 в 22:57)   письмо автору
 
   для: ddhvvn   (16.12.2006 в 21:54)
 

регэкспом заменяй ссылки на полные

   
 
 автор: cheops   (17.12.2006 в 00:27)   письмо автору
 
   для: ddhvvn   (16.12.2006 в 21:54)
 

Прикрепите кусок с HTML кодом (в виде файла) с ссылками, которые необходимо заменить, и сообщите какой вид должны принять ссылки в результате?

   
 
 автор: ddhvvn   (17.12.2006 в 09:37)   письмо автору
 
   для: cheops   (17.12.2006 в 00:27)
 

Кусок сейчас прикрепить не могу, но могу привести пример:
я через cURL зашел, скажем, на сайт www.my_site.ru. Там есть картинки, имеющая адрес images/picture1.gif и ссылка link2.php. То есть и ссылка, и картинка имеют относительные пути. А мне нужно, чтобы они были в формате соответственно www.my_site.ru/images/picture1.gif и www.my_site.ru/link2.php.

Надеюсь понятно объяснил :-)

   
 
 автор: ddhvvn   (17.12.2006 в 10:42)   письмо автору
 
   для: ddhvvn   (17.12.2006 в 09:37)
 

Для замены путей картинок вот что использую

<?php
  preg_replace
("|<img(.*) src=(\")?(.*)(\")?(.*)>|i""<img\\1 src=\"$url\\3\"\\5>"$buf);
  
//url - содержит хост, например, http://www.my_pict.ru
?>


Но проблема в том, что если путь картинки уже задан абсолютно, например, <img src=http://www.my_pict.ru/img/pict1.gif>, то после замены получается <img src=http://www.my_pic.ru/http://www.my_pict.ru/img/pict1.gif>

Как мне изменить рег.выражение, чтобы оно добавляло $url только, если в src это значение $url еще не содержится?

   
 
 автор: cheops   (17.12.2006 в 13:35)   письмо автору
 
   для: ddhvvn   (17.12.2006 в 10:42)
 

В этом случае вместо функции preg_replace() используется функция preg_replace_callback(), которая принимает одним из аргументов фукнцию обратного вызова - в этой функции можно проверить (в том числе и при помощи ещё одного регулярного выражения) какого вида URL был найден и в зависимости от его формата - заменять его или нет... Пример использования фукнции preg_replace_callback() вы сможете найти по ссылке http://www.softtime.ru/forum/read.php?id_forum=6&id_theme=13619.

   
 
 автор: ddhvvn   (17.12.2006 в 13:37)   письмо автору
 
   для: ddhvvn   (17.12.2006 в 10:42)
 

Проявил смекалку и решил задачу НАМНОГО проще :)). Вместо всяких "вымудрений", которые описывал выше, просто в блок <head></head> добавил тег <base> равный $url и ВСЕ! Вроде пока все работает.

P.S.: все равно хеопсу как всегда ОГРОМНОЕ спасибо :-)

   
Rambler's Top100
вверх

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