Что такое правильное регулярное выражение (для PHP preg_replace) для удаления пустых тегов абзаца (<p>)? - PullRequest
0 голосов
/ 21 сентября 2010

Я работаю в Wordpress и должен иметь возможность удалять изображения и пустые абзацы. До сих пор я узнал, как удалить изображения без проблем. Но тогда мне нужно удалить пустые теги абзаца. Я использую PHP preg_replace для обработки функций регулярных выражений.

Итак, в качестве примера, у меня есть строка:

<p style="text-align:center;"><img src="http://www.blah.com/image.jpg" alt="Blah Image" /></p><p>Some text</p>

Я использую это регулярное выражение:

/<img.*?(>)/

И я получаю следующую строку:

<p style="text-align:center;"></p><p>Some text</p>

Тогда мне нужно будет удалить пустой абзац. Я попробовал это, но он удаляет все параграфы и содержание параграфов:

/<p[^>]*><\/p[^>]*>/

Любая помощь / предложения с благодарностью!

Ответы [ 2 ]

3 голосов
/ 21 сентября 2010

Правильное регулярное выражение: без регулярного выражения . Вместо этого используйте HTML / DOM Parser. Они просты в использовании. Regex для обычных языков (а HTML нет).

0 голосов
/ 21 сентября 2010

/<p[^>]*><\/p[^>]*>/ (регулярное выражение, которое вы дали) должно работать нормально. Если это доставляет вам неприятности, вы можете попробовать дважды убежать от / следующим образом: /<p[^>]*><\\/p[^>]*>/

PHP забавен в цитировании и экранировании символов. Например, "\n" не равно '\n'. Первый - это разрыв строки, второй - буквальный обратный слеш, за которым следует 'n'. Ручная запись PHP о строковых литералах, вероятно, заслуживает быстрого просмотра.

...