Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Задача на поиск в html


Автор: Slauta 7.1.2010, 01:53
Не могу найти нармальное решение задачки, каторая мучает меня не одну неделю.... 

Её суть:
надо найти в тексте  ссылки на картинки (они могут иметь вид 'внутрисерверной' ссылки) типо <img src="image.jpg"> и заменить на {ggg} src="image.jpg" {/ggg} , на первый взгляд всё просто, берём и простой заменой заменяем <img на {ggg}, а патом на {/ggg}.
НО! Не всё так просто! Есть 3 формальности:
1. В тексте присутствуют другие html теги, и просто заменить "> на {/ggg} не палучится!
2. Картинок много...
3. В html свойствах картинки могут присутствовать атрибуты.


Всё! Вот такая вот задачка...

Автор: awdev 7.1.2010, 02:39
$html=  preg_replace("/<img (.*?)>/i", "{ggg}$1{/ggg}", $html);

Автор: Slauta 7.1.2010, 12:58
У меня как то более развернуто получается....
А здесь все просто....

Цитата(Slauta @  7.1.2010,  01:53 Найти цитируемый пост)
1. В тексте присутствуют другие html теги, и просто заменить "> на {/ggg} не палучится!

А с этим всё норм будет????

Автор: nerezus 7.1.2010, 13:21
решение в отключении жадности.

Автор: patap 7.1.2010, 13:28
Код
$res = preg_replace('#(<img (?:.*?)?)(src="[^"]+")((?:.*?)?/?>)#i',  "{ggg}$2{/ggg}", $text);  

Автор: Slauta 7.1.2010, 15:18
а как при помощи замены достать из <img ... src="i.jpg" ... >, i.jpg???

Автор: patap 7.1.2010, 15:27
так тебе надо получить

{ggg}src="asdf.jpg"{/ggg}

или

{ggg}asdf.jpg{/ggg}

Автор: Slauta 7.1.2010, 18:19
С тем я уже разобрался, мне надо достать ссылку на изображение!

Автор: patap 7.1.2010, 20:12
Код

preg_match_all('#(<img (?:.*?)?src=")([^"]+)("(?:.*?)?/?>)#', $text, $result);

Автор: Slauta 7.1.2010, 23:07
Цитата(patap @  7.1.2010,  20:12 Найти цитируемый пост)
Выделить всёкод PHP
1:
    
preg_match_all('#(<img (?:.*?)?src=")([^"]+)("(?:.*?)?/?>)#', $text, $result);


Это сообщение отредактировал(а) patap - 7.1.2010, 21:43


Дык она ж ищет <img ... src="i.jpg" ... >, а мне надо:

Цитата(Slauta @  7.1.2010,  18:19 Найти цитируемый пост)
мне надо достать ссылку на изображение! 


Цитата(Slauta @  7.1.2010,  15:18 Найти цитируемый пост)
i.jpg??? 

 smile

Добавлено через 4 минуты и 38 секунд
АААА всё нашёл!!!

Код

echo ($result[2]);

 smile  smile  smile  smile  smile  smile  smile  smile  smile 

Автор: patap 8.1.2010, 00:54
Slauta, подружись c функцией print_r()  и ей подобными ))

Автор: Slauta 8.1.2010, 01:43
Я прост тупанул немного!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)