У меня есть переменная $lol со значением:
<bgg>12312
<gg>lol</gg>
</bgg>123123
Мне нужно вырезать как-то lol (значение может меняться)
Делал так:
$yy = preg_replace('#<gg>(.+?)<\/gg>#is', '$1' , $lol);
Но оно выводит всё, а мне надо наоборот. Всё обрезать и оставить только lol
Windler, попробуй
'|<gg>(.*)</gg>|U'
поиграть с буквами в конце
preg_match('#<gg>(.*)(</gg>)#isU', $text, $matches);
echo $matches[1];
В нулевое значение как раз придет вся строка, то что в скобках придет в единицу. И ненадо использовать звездочку, она значит, что символов там может и не быть. S тоже лучше просто так не использовать, тем более с * без ? могут прилететь лишние данные.
$str = "bla bla bla <gg>lol</gg> bla bla bla";
$str = preg_replace('~<gg>.+?</gg>~i', '<gg>ВЫРЕЗАНО</gg>', $str);
echo $str;
Будет вырезано всё, включая теги между которыми ищешь
SlyDeath (10.10.2012/19:47)
В нулевое значение как раз придет вся строка, то что в скобках придет в единицу. И ненадо использовать звездочку, она значит, что символов там может и не быть. S тоже лучше просто так не использовать,
В грабберах постоянно использую эту регулярку и все ок.
~XeOn~, Ты видимо не сталкивался со сложными парсерами.
В идеале, когда можно парсить json или xml. А когда дело касается html, да ещё и криво написанного... Когда то, что тебе надо выцепить находится раньше, чем идентификатор, о который ты мог бы опереться... Здвёздочка является жадным квантификатором (в вашем случае, без вопросика). Ленивые (*?) конечно частенько использую, но вот жадные - никогда. Это быдлокодинг. =) А если ещё и модификатор s... Это вообще жара. Preg'и довольно тяжёлые функции, а если им ещё совать всякий хлам, то вообще бред. Тем более когда парсер выходит за грань "граббера простого и банального грида"....
SlyDeath (10.10.2012/20:05)
~XeOn~, Ты видимо не сталкивался со сложными парсерами. В идеале, когда можно парсить json или xml. А когда дело касается html, да ещё и криво написанного... Когда то, что тебе надо выцепить нах
вот как раз с html и работаю. Насчет звездочки, модификатор U не дает звездочке жрать все подряд. Если что).
А для xml существуют таке вещи как SimpleXML и DOMDocument. Для json - json_decode() / json_encode().
~XeOn~, Юльку я не заметил... Но U не прокатит в perl для заглушки жадности. И для лучшей привычки надо бы писать сразу кроссязычно. Но эт лирика... Я знаю, что надо для json и xml, по работе с головой в Zend_Json'e и SimpleXML'e почти каждый день. =) Но больше всего люблю джейсон, ибо xml старая неповоротливая хренатень (хоть XPath и мощная штука, спорить не буду, но стареет всё это).