2010-02-07 3 views
1

Если я имел следующий текст в строке:Получить текст после иглы?

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

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

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

Спасибо!

+0

Вы использовали кнопку «код» для HTML, когда вы используете кнопку «quote», уценка съест вашу разметку HTML. –

+0

спасибо :) Я забыл – tarnfeld

+0

Нет проблем. Можете ли вы уточнить, что именно в этом случае именно игла? Любой тег h4? Тег h4 с «Томом» в нем? Как далеко после иглы текст должен идти? –

ответ

5

используйте 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 parser. Он гораздо более надежный и менее вероятный, если он (например) встречается </h4>, а не </h4>. Однако в этом случае это избыток.

+0

+1 Если задача действительно ограничена, это лучший способ пойти. –

8

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

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

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

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

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

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

+1 для использования strstr – Yacoby

1

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

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

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

+0

Для всех проблем синтаксического разбора HTML я бы рекомендовал использовать класс DOM. Существует хорошая встроенная, но, вероятно, способ мощной для этой конкретной проблемы. Проблема с использованием чего-то вроде strstr или строковых подпрограмм заключается в том, что они будут сбой, как только структура HTML изменится. +1 для комментария с использованием парсера HTML/класса DOM. – TheGrandWazoo

+0

Вы имеете в виду, что я не получил +1 для Zappa Gravatar? –

Смежные вопросы