Нужно вытащить блок многострочного текста между любыми двумя тегами. При этом этот текст может содержать в себе теги <a ....>, <img...> и <br />. Их надо вытащить вместе с текстом.
Вот пример (то что нужно вытащить помечено красным):
<div>Первая строка<br />
Вторая строка<br />
<a href="http://www.ooo.ru> Слово </a>
<img src="http://www.ooo.ru>
Последняя строка</div>
Я написал выражение, но оно не захватывает все, что надо. Вы не могли бы подправить его:
#>(?: ((?!>)|<a[^>]*>|</a>|<img[^>]*>|<br />).)+<#mUsi
1. hippp - 26 Июня, 2010 - 18:14:24 - перейти к сообщению
2. sozdatel - 26 Июня, 2010 - 18:58:23 - перейти к сообщению
Я напишу позже своё решение этого вопроса, делал вчера тоже самое и получилось =) а если хочешь сам посмотри функцию http://www[dot]poiu[dot]ru/functions/ind[dot][dot][dot]eg-match-all[dot]htm
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- "<b>example: </b><div align=left>this is a test</div>",
- $out, PREG_PATTERN_ORDER);
- print $out[0][0].", ".$out[0][1]."\n";
- print $out[1][0].", ".$out[1][1]."\n"
Этот пример выведет:
CODE (htmlphp):
скопировать код в буфер обмена
скопировать код в буфер обмена
- <b>example: </b>, <div align=left>this is a test</div>
- example: , this is a test
Таким образом, $out[0] - массив из строк, соответствующих всему шаблону, а $out[1] содержит массив строк, заключенных между тегами.
Мне это помогло и всё получилось как нужно.