это регулярное выражение.
хорошо, если единственным требованием является удаление точных упаковочных строк <p>
и </p>
если вам нужно универсальное решение, надежное для html, вы должны использовать DOM .
(например, если вы хотите принимать классы, идентификаторы и различные атрибуты в тегах переноса абзаца.)
но имейте в виду, что загрузка документа нормализует ваш html.
<?
$str = array(
"Simple Test",
"<p>Here</p>",
"<p>Test <p>Nested</p> Outside </p>"
);
foreach($str as $st) {
echo $st." ---> ";
if(preg_match('#<p>(.+)</p>#',$st,$match) === 1) { // 1 if matched, 0 if not matched
$st = $match[1]; // if matched, replace our string by the match
}
echo $st."\n";
}
это сгенерирует вывод:
Simple Test ---> Simple Test
<p>Here</p> ---> Here
<p>Test <p>Nested</p> Outside </p> ---> Test <p>Nested</p> Outside
Вы могли бы легко сделать один лайнер. например, с помощью обратных ссылок preg_replace и regex вы можете заменить строку, которая соответствует ... но я надеюсь, что в этой форме она более понятна для вас.