Подскажите с preg_match_all в php

Andreyka
На сайте с 19.02.2005
Offline
822
1110

Нашел тут решение, которое позволяет получить атрибуты тега img.

Однако оно не работает, если в теге не используются кавычки:

<img src=http:/bla-bla.img border=0>

Подскажите как это исправить?

Не стоит плодить сущности без необходимости
LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#1

preg_match_all('/< *img[^>]*src *= *["\']?([^"\' ]*)/i', $img, $matches);

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
gormarket
На сайте с 29.12.2010
Offline
47
#2


$text='<img alt src = http:/bla-bla.img border=0 alt = "картинка для вставки" style=\'margin:10px;border-bottom:30px #b0b0b0 solid;\'>';
preg_match_all('#["\']?[\w]+["\']? *= *(?:(?:[^ >"\']+(?= |$))|(?:["\'][^>]+["\']))#iU', $text, $matches);
print '<pre>';
print_r($matches);
print '</pre>';

Array

(

[0] => Array

(

[0] => src = http:/bla-bla.img

[1] => border=0

[2] => alt = "картинка для вставки"

[3] => style='margin:10px;border-bottom:30px #b0b0b0 solid;'

)

)

Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)
Andreyka
На сайте с 19.02.2005
Offline
822
#3

Спасибо, gormarket. Буду изучать как работает этот регексп, уж очень он интересный.

C
На сайте с 20.05.2011
Offline
14
#4

регулярки - вещь хорошая, но для вашей задачи, имхо, не очень подходящая.

поглядите в сторону DOM и собственно, библиотеки, облегчающие его разбор, например

QueryPath

Simple Html DOM

вот пример на на QueryPath делающий то же самое:


<?php
# test.php
require_once 'QueryPath/QueryPath.php';
$content = file_get_contents($argv[1]);
$qp = htmlqp($content, NULL, array('convert_to_encoding' => NULL));
$imgs = $qp->find('img[src$=".jpg"]');

foreach ($imgs as $img) {
printf("src=%s\n", $img->attr('src'));
}
?>

php test.php http://mail.ru

вывод:


src=http://r2.mail.ru/b13229813.jpg
src=http://r2.mail.ru/b13488842.jpg
src=http://r2.mail.ru/b13490625.jpg
src=http://r2.mail.ru/b13487682.jpg
src=http://r2.mail.ru/b13483429.jpg
src=http://r2.mail.ru/b13485671.jpg
src=http://r2.mail.ru/b13489761.jpg
src=http://r2.mail.ru/b13487400.jpg
src=http://r2.mail.ru/b13482399.jpg
src=http://r2.mail.ru/b13445081.jpg
src=http://r2.mail.ru/b13445082.jpg
src=http://r2.mail.ru/b13466467.jpg
src=http://r2.mail.ru/b13446223.jpg
src=http://r2.mail.ru/b13446103.jpg
src=http://r2.mail.ru/b12532128.jpg
src=http://r2.mail.ru/b12533771.jpg
src=http://r2.mail.ru/b12531638.jpg
src=http://r2.mail.ru/b12532636.jpg
src=http://r2.mail.ru/b13339414.jpg
src=http://r2.mail.ru/b13338624.jpg
src=http://r2.mail.ru/b13337861.jpg
Andreyka
На сайте с 19.02.2005
Offline
822
#5

Регулярки именно то, что мне надо. DOM это костыль.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий