Удалите ненужные абзацы из строки, используя php
Как убрать ненужные
теги с использованием pregmatch в следующих случаях. я написал pregmatch, но он не работает в некоторых случаях. вот моя строка
<?php
$str='<div class="borderdummydiv" style="padding: 10px;">
<div class="showcolsec" style="line-height: normal;">
<p style="font-size: 14px;" data-mce-style="font-size: 14px;"><strong>Email Template for Testing - 01:</strong></p><p style="font-size: 14px;" data-mce-style="font-size: 14px;"><br data-mce-bogus="1"></p><p style="font-size: 14px;" data-mce-style="font-size: 14px;">Email body for testing the autoresponder mails and email blasts scheduling functionality<br data-mce-bogus="1"></p>
<p></p>
<p><br></p>
<p></br></p>
<p> </br></p>
<p> <br class="ddd"></p>
<p class="ddd"></p>
<p class="ddd"><br class="ddd"></p>
<p class="ddd"></br></p>
<p class="ddd"> </br></p>
<p class="ddd"> <br class="ddd"></p>
</div>
</div>';
//echo $str;
echo preg_replace("/<p[^>]*>[\s| |<\br [^>]*>|<\/br>]*<\/p>/", '', $str);
?>
Ниже приведены нежелательные абзацы. так как я могу удалить из строки
<p></p>
<p><br></p>
<p></br></p>
<p> </br></p>
<p> <br class="ddd"></p>
<p class="ddd"></p>
<p class="ddd"><br class="ddd"></p>
<p class="ddd"></br></p>
<p class="ddd"> </br></p>
<p class="ddd"> <br class="ddd"></p>
2 ответа
Решение
В своем регулярном выражении в части <\ br [^>]*> вы избегаете "b" с обратной косой чертой. Тем самым вы превращаете это в забой. Я думаю, ты не хочешь этого.
Попробуйте удалить тот обратный слеш, который затем делает это:
echo preg_replace("/<p[^>]*>[\s| |<br [^>]*>|<\/br>]*<\/p>/", '', $str);
РЕДАКТИРОВАТЬ: (из-за новой информации спрашивающего) Хорошо, с этим он работает:
echo preg_replace("/<p[^>]*>(\s| |<br [^>]*>|<\/?br>)*<\/p>/", '', $str);
Пришлось заменить квадратные скобки на круглые и сделать косую черту перед "br" необязательной.
Вот мой код
$str='<div class="borderdummydiv" style="padding: 10px;">
<div class="showcolsec" style="line-height: normal;">
<p style="font-size: 14px;" data-mce-style="font-size: 14px;"><strong>Email Template for Testing - 01:</strong></p>
<p style="font-size: 14px;" data-mce-style="font-size: 14px;"><br data-mce-bogus="1"></p>
<p></p>
<p><br></p>
<p></br></p>
<p> </br></p>
<p> <br class="ddd"></p>
<p class="ddd"></p>
<p class="ddd"><br class="ddd"></p>
<p class="ddd"></br></p>
<p class="ddd"> </br></p>
<p class="ddd"> <br class="ddd"></p>
<p style="font-size: 14px;" data-mce-style="font-size: 14px;">Email body for testing the autoresponder mails and email blasts scheduling functionality<br data-mce-bogus="1"></p>
<p style="font-size: 14px;" data-mce-style="font-size: 14px;"><strong>Email Template for Testing - 01:</strong></p><p style="font-size: 14px;" data-mce-style="font-size: 14px;"><br data-mce-bogus="1"></p><p style="font-size: 14px;" data-mce-style="font-size: 14px;">Email body for testing the autoresponder mails and email blasts scheduling functionality<br data-mce-bogus="1"></p>
</div>
</div>';
//echo $str;
echo preg_replace("/<p[^>]*>[\s| |<br [^>]*>|<\/br>]*<\/p>/", '', $str);
Вот вывод html
<div class="borderdummydiv" style="padding: 10px;">
<div class="showcolsec" style="line-height: normal;">
<p style="font-size: 14px;" data-mce-style="font-size: 14px;"><strong>Email Template for Testing - 01:</strong></p>
<p style="font-size: 14px;" data-mce-style="font-size: 14px;"><br data-mce-bogus="1"></p>
<p></p>
</p>
<p>
<p>
<p> <br class="ddd"></p>
<p class="ddd"></p>
<p class="ddd"><br class="ddd"></p>
<p class="ddd">
<p class="ddd">
<p class="ddd"> <br class="ddd"></p>
<p style="font-size: 14px;" data-mce-style="font-size: 14px;">Email body for testing the autoresponder mails and email blasts scheduling functionality<br data-mce-bogus="1"></p>
<p style="font-size: 14px;" data-mce-style="font-size: 14px;"><strong>Email Template for Testing - 01:</strong></p><p style="font-size: 14px;" data-mce-style="font-size: 14px;"><br data-mce-bogus="1"></p><p style="font-size: 14px;" data-mce-style="font-size: 14px;">Email body for testing the autoresponder mails and email blasts scheduling functionality<br data-mce-bogus="1"></p>
</div>
</div>
Показывать это в браузере
Email Template for Testing - 01:
Email body for testing the autoresponder mails and email blasts scheduling functionality
Email Template for Testing - 01:
Email body for testing the autoresponder mails and email blasts scheduling functionality