Здравствуйте. Есть строка, в которой содержится текст типа:
<p>заголовок</p>
<p>содержание</p>
<p>еще что-то</p>
Вопрос: Каким образом мне вырезать только содержание? оно всегда идет вторым тегом <p></p>
То есть, мне нужно из этой строки сделать строку вида:
<p>заголовок</p>
<p>еще что-то</p>
Буду очень благодарен за помощь.
preg_replace('/^.*?<\/p>.*?\K<p>.*?<\/p>/is','',$str);
Расшифровка выражения:
^ # Начало строки
.*? # любые символы
<\/p> # конец первого тега P
.*? # любые символы
\K # точка начала совпадения (замены)
<p>.*?<\/p> # вырезаемые символы в теге
/is # флаги выражения, без учета регистра, однострочное (. включает перевод каретки)
Вариант с DOMDocument:
$dom = new DOMDocument;
$dom->loadHTML($yourStr);
$p = $dom->getElementsByTagName('p')->item(1);
var_dump($p->textContent);
Можно попробовать с помощью регулярных выражений.
$output=preg_replace("/<\/p>[^<]*<p>[^>]*<\/p>/", "</p>", $input_lines);
Онлайн тест: http://www.phpliveregex.com/p/jkS
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости