2009-10-15 4 views
1

Я пишу несколько простых парсеров для своей страницы и имею некоторые проблемы с этим.проблемы с разбором текста с использованием preg_split

HTML текст:

<p>some text</p><p>another text</p> 

Если я пытаюсь использовать что-то вроде:

preg_split("#<p>#",$string); 

У меня есть результат без <p>, и это очень очень плохо. (только </p> есть)

Может быть, я могу разделить эту строку на массив, но не удалять </p>?

ответ

1

Как и Иван сказал, вы должны использовать (?=<p>). Просто хотел бы добавить, что вы можете использовать

var $Paragraphs = array_filter(preg_split("/(?=<p>)/", "<p>some text</p><p>another text</p>"));

Который будет:

[1] => <p>some text</p> 
[2] => <p>another text</p> 
4

Вы можете использовать эту конструкцию (?=<p>), которая является positive lookahead zero-width assertion. Этот шаблон не будет использовать текст, который он соответствует. Он просто найдет позицию до строки <p>. Вот пример:

preg_split("#(?=<p>)#",$string); 
Смежные вопросы