Если бы у меня был следующий текст в строке:
<h4>Tom</h4> <p>One Paragraph</p> <p>Two Paragraph</p>
Какой код мне понадобится для синтаксического анализа этой строки, чтобы получить такой вывод (если я не знал, что находится внутри <h4>
?
<p>One Paragraph</p> <p>two Paragraph</p>
Благодаря!
Используйте 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-код вам интересен, вы можете создать подходящее регулярное выражение. Для чего-нибудь более общего я бы исследовал маршрут парсера.