[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регулярное выражение на изъятие ссылки на рисунок
Guest 007
Столкнулся с проблемой изъятия пути к рисунку из html текста.
Есть регулярка: src\s*=\s*"([^"]*"|\'[^\']*\'|[^\s]+)"
Прекрасно работает если в пути к рисунку нет пробелов, но если есть пробел, то перестает воспринимать.
Пытался сделать так:
src\s*=\s*"([^"]*"|\'[^\']*\'|[\s]*|[^\s]+)"
и так
src\s*=\s*"([^"]*"|\'[^\']*\')"

но не вышло.



Спустя 3 минуты, 46 секунд (15.11.2010 - 19:44) DedMorozzz написал(а):
ужас)
$a = preg_replace('#src ?= ?(\'|")(.*?)\\1#', '$2', $text);

Спустя 16 часов, 52 минуты, 3 секунды (16.11.2010 - 12:36) Guest 007 написал(а):
Странно работает эта регулярка =)

Была строчка
<img scr="images/blabla.jpg" alt="blablabla">

и
echo preg_replace('#src ?= ?(\'|")(.*?)\\1#', '$2', $p_row["desc_html"]);

вывело
<img images/blabla.jpg alt="blablabla">


А мне надо чтоб вывело
images/blabla.jpg


Другими словами из кучи html хлама мне нужно выбрать путь к рисунку и записать его в базу.

Спустя 9 минут, 7 секунд (16.11.2010 - 12:45) DedMorozzz написал(а):
Ну а что ты ожидаешь написав в теге ИМГ "scr"?? Когда должно быть src.
В регулярке то нормально написано
<?php

$a = '<img src="images/blabla.jpg" alt="zzzz">';
$a = preg_replace('#.*?src ?= ?(\'|")(.*?)\\1.*#', '$2', $a);
echo $a;//images/blabla.jpg

Спустя 1 час, 3 минуты, 13 секунд (16.11.2010 - 13:48) Guest 007 написал(а):
Ошибся при наборе текста на форуме, src в исходниках написано правильно.
Но регулярка все равно выводит не совсем то что нужно.
Введите, например, в $a
$a = '<img src="images/blabla.jpg" alt="zzzz"><div>4tonibud</div><table><tr><td>omg</td> ;</tr></table>';

У меня $a = preg_replace('#.*?src ?= ?(\'|")(.*?)\\1.*#', '$2', $a); выходит такие данные
images/blabla.jpg<div>4tonibud</div><table><tr><td>omg</td></tr></table>


Спустя 13 минут, 21 секунда (16.11.2010 - 14:02) DedMorozzz написал(а):
и почему я не верю...
<?php

$a = '<img src="images/blabla.jpg" alt="zzzz"><div>4tonibud</div><table><tr><td>omg</td> ; ;</tr></table>';
$a = preg_replace('#.*?src ?= ?(\'|")(.*?)\\1.*#', '$2', $a);
echo $a;//images/blabla.jpg
Проверил код. Работает как надо

Или пиши реальный кусок кода. Ибо с этим 100% все нормально

Спустя 31 минута, 50 секунд (16.11.2010 - 14:33) Guest написал(а):
Реальный кусок кода

$a = $product_row["description_html"];
$a = preg_replace('#.*?src ?= ?(\'|")(.*?)\\1.*#', '$2', $a);
echo $a;

В $product_row["description_html"] содержится куча-мала из html кода вида "Рисунок + таблица с описанием", который мне надо разделить на рисунок и все остальное. Т.к. наименований 3000++ то каждый продукт так разделять дело муторное и гимморойное. Задался целью написать скриптик, который бы мне выдирал путь к рисунку и удалял из $product_row["description_html"] теги <img ..>...</img> полностью.

Так вот соль в чем. Когда копирую Ваш код - выводит только путь, но как только в $a подставляю данные с базы, то пишет путь и потом все остальные теги и символы которые расположены после тега <img> :(

Спустя 2 минуты, 18 секунд (16.11.2010 - 14:36) DedMorozzz написал(а):
#.*?src ?= ?(\'|")(.*?)\\1.*#
=>
#.*?src ?= ?(\'|")(.*?)\\1.*#s

Спустя 2 минуты, 12 секунд (16.11.2010 - 14:38) Guest 007 написал(а):
Спасибо smile.gif
Быстрый ответ:

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