Вырезать часть текста из строки

368
11 марта 2017, 04:31

Здравствуйте. Есть строка, в которой содержится текст типа:

<p>заголовок</p> <p>содержание</p> <p>еще что-то</p>

Вопрос: Каким образом мне вырезать только содержание? оно всегда идет вторым тегом <p></p>

То есть, мне нужно из этой строки сделать строку вида:

<p>заголовок</p> <p>еще что-то</p>

Буду очень благодарен за помощь.

Answer 1
preg_replace('/^.*?<\/p>.*?\K<p>.*?<\/p>/is','',$str);

Расшифровка выражения:

^           # Начало строки
.*?         # любые символы
<\/p>       # конец первого тега P
.*?         # любые символы
\K          # точка начала совпадения (замены)
<p>.*?<\/p> # вырезаемые символы в теге
/is         # флаги выражения, без учета регистра, однострочное (. включает перевод каретки)
Answer 2

Вариант с DOMDocument:

$dom = new DOMDocument;
$dom->loadHTML($yourStr);
$p = $dom->getElementsByTagName('p')->item(1);
var_dump($p->textContent);
Answer 3

Можно попробовать с помощью регулярных выражений.

$output=preg_replace("/<\/p>[^<]*<p>[^>]*<\/p>/", "</p>", $input_lines);

Онлайн тест: http://www.phpliveregex.com/p/jkS

READ ALSO
Деплой на мастер сервер

Деплой на мастер сервер

На данный момент в проекте есть дев сервер и у каждого разработчика своё локальное окружение приближенное к реальному

303
Оптимизация изображений Laravel 5.3

Оптимизация изображений Laravel 5.3

Для загрузки изображений используются посторонняя библиотека изображение сохраняется в нескольких расширениях с учетом пропорций, это...

590
PHP вычесть час из даты

PHP вычесть час из даты

Я получаю дату в виде строчки: "0903

351
Не открывается админка umi.cms

Не открывается админка umi.cms

При попытке зайти в админку, после ввода логина:пароля отображается белый экран без всегоВключил debug, выводятся следующие строчки:

400