[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вырезать src с img.
RCuPeR
$pattern = '#<img[^>]*src=\"(.*)\"[^>]*/>#isU';
Возвращает кучу разного хлама.

$pattern = '#<img[^>]*src="([^"]*)"[^>]*/>#isU';

Возвращает то, что нужно но в ограниченном количестве :angry:



Спустя 3 минуты, 3 секунды (24.02.2012 - 16:10) m4a1fox написал(а):
RCuPeR
Извини, но ты регулярки уже месяца 3 мурыжишь... все ни как не поддаются? Давай строку (исходник), и что нужно получить на выходе?

Спустя 14 минут, 8 секунд (24.02.2012 - 16:24) RCuPeR написал(а):
Я тебе скажу больше, уже, наверное год их "мурыжу" mad.gif Никак не дойдет...(

Строка:
получить путь изображения из тега <img>; не учитывать любые атрибуты.

Спустя 4 минуты, 56 секунд (24.02.2012 - 16:29) RCuPeR написал(а):
$pattern = '#<img.*?src *= *(\'|")(.*?)\\1.*?>#';

Подошел. Упростить нельзя ?

Спустя 8 минут, 43 секунды (24.02.2012 - 16:37) m4a1fox написал(а):
RCuPeR
Цитата
Подошел. Упростить нельзя ?

Сам написал?

Спустя 2 минуты, 5 секунд (24.02.2012 - 16:39) RCuPeR написал(а):
Не, сопоставил несколько готовых.

Такой вот вопрос:
например, я хочу спарсить title нашего форума, но кодировка форума charset=windows-1251. Соответственно, регулярка типа '#<title>([^\<]*)</title>#isU' возвращает "Ôîðóì PHP ïðîãðàììèñòîâ". Как быть ?

Спустя 2 минуты, 4 секунды (24.02.2012 - 16:41) m4a1fox написал(а):
iconv в помощь.

Спустя 8 минут, 49 секунд (24.02.2012 - 16:50) m4a1fox написал(а):
RCuPeR
И все таки.... дай строчку где находишь src... мне интересно стало!

Спустя 20 минут, 45 секунд (24.02.2012 - 17:11) m4a1fox написал(а):
Так как я не дождался ответа от тебя...то. К примеру, есть

<img title="img" alt="img" src="img/uHOFc02hrd.png" />

вытаскивает регуляркой

$img = '<img title="img" alt="img" src="img/uHOFc02hrd.png" >';
$patern = '#<img\s([a-zA-Z]*).*src="([a-zA-Z].*)"\s>#s';

preg_match($patern, $img, $r);
echo '<pre>';
print_r($r);
echo '</pre>';


Или так
-----------------------------------------------------------------------------------------

$img = '<img title="img" alt="img" src="http://www.sandbox.com/img/uHOFc02hrd.png" />';
$patern = '#<img\s[a-zA-Z]*.*src="([a-zA-Z].*)"\s/>#';

preg_match($patern, $img, $r);
echo '<pre>';
print_r($r);
echo '</pre>';

Спустя 6 минут, 42 секунды (24.02.2012 - 17:18) RCuPeR написал(а):
iconv("windows-1251", "UTF-8", $matches[1]);

Вообще бред вывел.

Да любой <img> :) Например:
<img src="/_Images/titles/search.gif" width="32" height="8" alt="Поиск" title="Поиск" align="absmiddle">

Спустя 47 секунд (24.02.2012 - 17:19) RCuPeR написал(а):
Как ты уже заметил, я не гуру, но мне кажется, твоя регулярка чуть сложнее чем эта:
$pattern = '#<img.*?src *= *(\'|")(.*?)\\1.*?>#';

Спустя 7 минут, 28 секунд (24.02.2012 - 17:26) m4a1fox написал(а):
RCuPeR
Не, я ж не настаиваю. Откровенно, твою я прочитать словами не могу sad.gif

Спустя 1 минута, 34 секунды (24.02.2012 - 17:28) RCuPeR написал(а):
Аналогично biggrin.gif
Главное, что работает.
А вот теперь беда с кодировкой mad.gif

Спустя 6 минут, 58 секунд (24.02.2012 - 17:35) m4a1fox написал(а):
RCuPeR
Цитата
А вот теперь беда с кодировкой

А что выводит?

Цитата

Аналогично

Так не пойдет! Надо разбираться!

Спустя 4 минуты, 32 секунды (24.02.2012 - 17:39) m4a1fox написал(а):
Winston не подсказывай пока что.... smile.gif

Спустя 6 минут, 17 секунд (24.02.2012 - 17:45) Winston написал(а):
Цитата
Winston не подсказывай пока что....

Почему? smile.gif

Спустя 33 минуты, 39 секунд (24.02.2012 - 18:19) Winston написал(а):
RCuPeR
У нас форум в кодировке windows-1251, потому для того, чтобы у тебя корректно отображалось все, что ты спарсишь у тебя файл тоже должен быть в этой кодировке
Вот парсинг src картинок
$page = file_get_contents('http://phpforum.ru');
preg_match_all('#<img.*src=(?:\'|")(.*)(?:\'|")[^>]*>#isU', $page, $match);
echo '<pre>'.htmlspecialchars(print_r($match[1], 1)).'</pre>';

А вот так можно тайтл спарсить
preg_match('#<title>(?<title>.*)</title>#isU', $page, $match);
echo $match['title'];

Спустя 21 минута, 1 секунда (24.02.2012 - 18:40) nugle написал(а):
Winston
а что значит во второй регулярки( про тайтл), такая конструкция (?

Спустя 1 час, 33 минуты, 4 секунды (24.02.2012 - 20:13) Winston написал(а):
nugle
Это именованная группировка, если ее применить то в выходном массиве будет ассоциативный ключ.
Есть такие варианты записи
(?<indexName>.*) Или (?P<indexName>.*), но эту возможно лучше всего использовать когда выходящий массив будет не большой, т.к. добавляется еще одна копия элемента, только с ассоциативным индексом.
Если распечатать массив, то можно увидеть
Array
(
[0] => <title>Форум PHP программистов</title>
[title] => Форум PHP программистов
[1] => Форум PHP программистов
)

Как видно создается еще одна копия элемента массива, потому еще раз повторю, при больших выходных массивах, именованную группировку лучше не использовать.

Спустя 27 минут, 14 секунд (24.02.2012 - 20:40) nugle написал(а):
Winston
понял, спасибо)


_____________
Гнусный социопат с комплексом Бога.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.