Получить текст после иглы?

Если бы у меня был следующий текст в строке:

<h4>Tom</h4> <p>One Paragraph</p> <p>Two Paragraph</p> 

Какой код мне понадобится для синтаксического анализа этой строки, чтобы получить такой вывод (если я не знал, что находится внутри <h4> ?

  <p>One Paragraph</p> <p>two Paragraph</p> 

Благодаря!

Related of "Получить текст после иглы?"

Используйте stripios для начала </h4> . Добавьте длину </h4> к смещению, а затем используйте substr для получения всего текста после смещения.

Пример:

 $str = '....Your string...'; $offset = stripos($str, '</h4>'); if ( $offset === false ){ //error, end of h4 tag wasn't found } $offset += strlen('</h4>'); $newStr = substr($str, $offset); 

Я должен отметить, что если HTML становится более сложным или вы не контролируете HTML, вы можете использовать парсер HTML . Он гораздо более надежный и менее вероятный, если он (например) встречается < /h4 > а не </h4> . Однако в этом случае это избыток.

Вы можете использовать strstr для получения подстроки, начинающейся с </h4> и удалить </h4> с помощью substr :

 $needle = '</h4>'; $rest = substr(strstr($string, $needle), strlen($needle)); 

Начиная с PHP 5.3 вы также можете указать третий параметр before_needle с true :

 $rest = strstr($string, $needle, true); 

Другой способ – использовать explode :

 list(,$rest) = explode($needle, $string, 2); 

Если образец HTML, который вы опубликовали, является особенно репрезентативным для вашего набора данных, вам может быть проще и надежнее использовать парсер HTML, такой как этот .

HTML, как известно, трудно анализировать достоверно (технически, невозможно) с помощью регулярных выражений, а синтаксический анализатор предоставит вам очень простые средства для поиска интересующих вас узлов.

Если вышеуказанный HTML-код вам интересен, вы можете создать подходящее регулярное выражение. Для чего-нибудь более общего я бы исследовал маршрут парсера.