Есть несколько вариантов
Во первых:
<img src="lala">
<img src ="lala">
<img src = "lala">
Во вторых:
Есть еще и <embed src="flash/Antitelo.swf"
Соответственно
<embed src="flash/Antitelo.swf"
<embed src ="flash/Antitelo.swf"
<embed src= "flash/Antitelo.swf"
Мне нужно получить то, что находиться в " ".
В случаи с <embed src="flash/Antitelo.swf", мне нада получить flash/Antitelo.swf
Спустя 1 час, 32 минуты, 37 секунд (1.02.2011 - 21:28) Dron19 написал(а):
$text = '<img title="" src="flash/Antitelo.swf" alt="zalupa">';
$replace = preg_replace("/<.*?\s?src\=(\"|')(.*?)\\1\s?.*?>/i","\\2",$text);
echo $replace . "<br>"; // flash/Antitelo.swf
Вариант подуйствует для любого тэга, который имеет атрибут src и вытащит его
Если подошло, то с тебя плюс :)
Спустя 14 минут, 2 секунды (1.02.2011 - 21:42) Dron19 написал(а):
На сколько я понял она тебе нужна сильно, тогда лучше вот так ее оформить :)
Примечание к функции: - вернет значение src тэга в том случае, если тэг одинарный и оформлен в <>, то есть обычный нормальный тэг... Тогда функция будет работать корректно.
С тебя плюс ;)
<?php
function src_from_tag($tag) {
return preg_replace("/<.*?\s?src\=(\"|')(.*?)\\1\s?.*?>/i","\\2",$tag);
}
$text = '<img title="Ыыыыы" src="flash/Antitelo.swf" alt="test">';
echo src_from_tag($text) . "<br>"; // flash/Antitelo.swf
$text = '<embed src="test.jpg">';
echo src_from_tag($text) . "<br>"; // test.jpg
?>
Примечание к функции: - вернет значение src тэга в том случае, если тэг одинарный и оформлен в <>, то есть обычный нормальный тэг... Тогда функция будет работать корректно.
С тебя плюс ;)
Спустя 14 минут, 59 секунд (1.02.2011 - 21:57) Dron19 написал(а):
а если ты работаешь с utf-8, то в конце регулярке, там где стоит i, добавь u
Спустя 13 часов, 46 минут, 21 секунда (2.02.2011 - 11:43) Tuezov написал(а):
Dron19 спасибо большое. Интересно именно следующее
1) <img src="need";
2) <img border src="need"
Т.е не факт, что нужен будет именно img потом src
Src может быть и через 4 колена после img
1) <img src="need";
2) <img border src="need"
Т.е не факт, что нужен будет именно img потом src
Src может быть и через 4 колена после img
Спустя 1 час, 21 минута, 36 секунд (2.02.2011 - 13:05) DedMorozzz написал(а):
Tuezov
В принципе регулярка
Итого, в не зависимости где будет СРК регулярка имеет вид:
В данном случае рассматривается работа с юникодом. Иного и не должно быть
В принципе регулярка
/<.*?\s?src\=(\"|')(.*?)\\1\s?.*?>/i","\\2"верна, за некоторой поправкой. Совершенно не ясно зачем в начале стоит \s? и для какой цели проэкранирован НЕ СПЕЦ СИМВОЛ "равно"
Итого, в не зависимости где будет СРК регулярка имеет вид:
$a = preg_replace('#<.*?src\s*=\s*("|\')(.*?)\\1#us',"\\2", $text);
В данном случае рассматривается работа с юникодом. Иного и не должно быть
Спустя 39 минут, 54 секунды (2.02.2011 - 13:45) Dron19 написал(а):
тебе уже помогли, в моей регулярке только лишь последнюю > убрали и все
Спустя 7 минут, 37 секунд (2.02.2011 - 13:53) DedMorozzz написал(а):
Dron19, можно и так сказать. Только не одним > ограничилось.
1 - лишняя запись
2 - добавил условие пробелов. Они веть могут быть. Верно?
3 - экранировать равно смысла нету
4 - то же самое что и 2
5 - этот кусок не нужен. Зачем обрабатывать то, что и так нам не надо. Это же лишнее время и выч. мощностя
6 - добавил модификатор юникода и что бы точка включала в себя перенос строки. Мало ли как располагаться будет тег.
В целом достаточно не плохо.
/<.*? (\s?)--1 src(тут добавил)---- 2(\) ---- 3=(тут добавил)---4(\"|')(.*?)\\1*(\s?.*?>)----5/i(тут добавил)---- 6","\\2"
1 - лишняя запись
2 - добавил условие пробелов. Они веть могут быть. Верно?
3 - экранировать равно смысла нету
4 - то же самое что и 2
5 - этот кусок не нужен. Зачем обрабатывать то, что и так нам не надо. Это же лишнее время и выч. мощностя
6 - добавил модификатор юникода и что бы точка включала в себя перенос строки. Мало ли как располагаться будет тег.
В целом достаточно не плохо.
Спустя 2 минуты, 41 секунда (2.02.2011 - 13:55) Dron19 написал(а):
Я стараюсь...
Спустя 32 секунды Dron19 написал(а):
раньше я не мог вообще быстро составить регЭксп, а сейчас уже бегло получается, как раз благодаря тебе
Спустя 32 секунды Dron19 написал(а):
раньше я не мог вообще быстро составить регЭксп, а сейчас уже бегло получается, как раз благодаря тебе
Спустя 3 часа, 57 минут, 36 секунд (2.02.2011 - 17:53) Tuezov написал(а):
А можно с preg_match пример?
Спустя 35 минут, 6 секунд (2.02.2011 - 18:28) Dron19 написал(а):
preg_match всего лишь возвращает true если найдет совпадение с регулярным выражением. Блин, с тебя плюс Я тебе тут целую функцию писал, хотел помочь, а ты...
Спустя 3 минуты, 11 секунд (2.02.2011 - 18:31) Tuezov написал(а):
Вот мне и нужно получить массив.
Я лично вообще написал так preg_match_all('|<img *src="(.*)">|isU',$text,$img);
А нужно <img (любый символы сколько угодно, до пробел src)
Я лично вообще написал так preg_match_all('|<img *src="(.*)">|isU',$text,$img);
А нужно <img (любый символы сколько угодно, до пробел src)
Спустя 1 минута, 57 секунд (2.02.2011 - 18:33) DedMorozzz написал(а):
Цитата (Tuezov @ 2.02.2011 - 16:53) |
А можно с preg_match пример? |
да, можно. Найди нужнее тебе вхождение и запиши в массив. Инфа, в принципе у тебя вся есть. Изменять надо будет не много.
Самое главное - алгоритм уже на руках.
Если у самого желания делать нету - за 3$ или 50р напишу готовое решение.
Хотя основное тебе уже написали.
Спустя 1 минута, 18 секунд (2.02.2011 - 18:34) Tuezov написал(а):
DedMorozzz Я плохо понимаю регулярные выражения. Как отразить любое кол -во символом до пробел src?
Спустя 3 минуты, 22 секунды (2.02.2011 - 18:38) DedMorozzz написал(а):
Как отразить любое кол -во символом до пробел src
.*? src
Спустя 1 минута, 57 секунд (2.02.2011 - 18:40) Tuezov написал(а):
Что то так не робит preg_match_all('|<img .*? src="(.*)">|isU',$text,$img);
Спустя 5 минут, 9 секунд (2.02.2011 - 18:45) DedMorozzz написал(а):
echo "<pre>";И смотри номер нужного элемента
print_r($img);
echo "</pre>";
Спустя 2 минуты, 53 секунды (2.02.2011 - 18:48) Tuezov написал(а):
Array
(
[0] => Array
(
)
[1] => Array
(
)
)
Вот результат по preg_match_all('|<img .*? src="(.*)">|isU',$text,$img);
Мб как то по другому или у меня ошибка в синтаксисе?
(
[0] => Array
(
)
[1] => Array
(
)
)
Вот результат по preg_match_all('|<img .*? src="(.*)">|isU',$text,$img);
Мб как то по другому или у меня ошибка в синтаксисе?
Спустя 5 часов, 36 минут, 8 секунд (3.02.2011 - 00:24) DedMorozzz написал(а):
src="
пробелов нету между равно?
пробелов нету между равно?
_____________
Туезов А.В