Следующий шаблон будет соответствовать всем <p> </p>
блокам, которые включают
вместе с любым сопровождающим текстом, как в вашем примере.
$text = "<p>keep me</p> <p>strip me </p>";
$pattern = "/<p>[^<]* \;[^<]*<\/p>/";
$output = preg_replace($pattern, '', $text);
Если вы действительно хотите, чтобы он только вырезал <p> </p>
блоки с
и пробелами, используйте следующий шаблон:
$pattern = "/<p>(\s* \;\s*)+<\/p>/";
Если вы хотите вырезать только блоки <p> </p>
, которые имеют
и до определенного количества символов, используйтеследующее (установка переменных $maxChars
на ваше усмотрение):
$maxCharsBefore = 10;
$maxCharsAfter = 10;
$pattern = "/<p>[^<]{0,".$maxCharsBefore."} \;[^<]{0,".$maxCharsAfter."}<\/p>/";