Регулярное выражение с переводом строки

Korner

Новичок
Регулярное выражение с переводом строки

мне нужно выдрать содержимое допустим между двумя любыми тэгами, анпример <B>
"/<b>(.+?)\<\/b>/"
работает, но если между тэнами будет перевод строки, то нет, подскажите плиз, что дописать в выражение, чтобы переходы тоже хавались
 

SiMM

Новичок
[m]PCRE[/m] на предмет изучения модификаторов паттерна. В частности - s (и, наверное, i ;) )
 

neko

tеam neko
нет попробуй с другой стороны плюса

хотя эффективнее будет сходить по ссылке и прочесть статью
 

Korner

Новичок
дык прочитал статью... так понял m -модификатор, ставить в конце
/<b>(.+?)\<\/b>/m

но все равно не получаеться
 

vladax

Новичок
значит ошибка в коде..
покажи код.. только без фанатизма :)

хотя может быть куча других нюансов..
лучше действительно читай все снова и снова.. пока не дойдет в чем твой трабл :)
 

neko

tеam neko
вообще это забавно
чувак даже тред который открыл прочесть не может
куда ему факи
 

Korner

Новичок
да, блин, шо вы такие злые

переменная mesage считываеться из базы данных, это сообщение с phpbb форума, я пытаюсь парсить его на теги
все работало, когда были однострочные сообщения) когда пошли многострочные перестало)
$message, сообщение, оно точно есть
далее
preg_match_all("/<span style=\"font-size: 9px; color: #555555;\">(.+?)\<\/span>/m", $message, $offtops);

print_r($offtops);

выводиться ничего Array ( [0] => Array ( ) [1] => Array ( ) )
 

neko

tеam neko
мы не злые
мы наоброт -- само человеколюбие
другой бы уже давно сказал что в первом же ответе содержится нужный тебе модификатор
но мы не такие, мы этого не говорим, а терпеливо уговариваем тебя читать документацию
 

Korner

Новичок
когда тренируюсь на вот таком
$message='вфлаофлдп плтвдплт длытпдтп ыф <b> aagad \n\n gadgj</b> \n sdgahashfhfh \n sdgadhas';
preg_match_all("/<b>(.+?)\<\/b>/m", $message, $offtops);
print_r($offtops);
все работает и без /m, но видимо я слишком глупо тренируюсь) как задать перевод строки в переменной я тоже значт не знаю
 

Korner

Новичок
<?
preg_match_all("/<b>(.+?)<\/b>/m", $message, $offtops);
print_r($offtops);
?>
<form action="?" method="POST">
<textarea name="message" cols="50" rows="20"></textarea><br><br>
<input type="submit" value="Сохранить">
</form>

вот такой допустим скрипт
если в texarea между <b> и </b> нажать ентер, то ничего не найдеть, если там нет перевода то в offtops будет значение , что между тегами
 

SiMM

Новичок
Молодец, уже лучше, теперь подыми глазки и перечитай внимательно первый ответ
PS: правда, было бы ещё лучше, если бы это было так:
PHP:
<?
$message = <<<HTML
Этот <b>выделенный
фрагмент</b> не находится, но находится, если всё слить в одну строку
HTML;
preg_match_all("/<b>(.+?)<\/b>/m", $message, $offtops);
print_r($offtops);
?>
 

Korner

Новичок
все, решил проблему, всем спасибо
preg_match_all("/<b>((\n|\r|.)+)<\/b>/mU", $message, $offtops);
 
Сверху