Удалить не HTML-теги из строки - PullRequest
0 голосов
/ 26 июня 2019

Итак, я получил строку (я написал что-то случайное, фактическая строка может быть любой и может содержать любые / все теги HTML):

$my_str = "<p>Lorem ipsum</p><i:f>hello</i:f><div>some other text</div><qe></qe>"

Мне нужно удалить все не HTML-теги, поэтому <i:f> и <qe> должны быть удалены, но остальные должны остаться.

Я полностью осознаю, что мог бы просто использовать функцию strip_tags() и просто заполнить все теги, которые мне нужно оставить (и это то, что я буду делать, если кто-то не предложит более элегантное решение), потому что заполнение $allowed_tags флаг со всеми допустимыми тегами HTML5 - не лучший подход.

пример:

echo strip_tags($my_str, '<a><i><br><p><div><aside><h1><h2>......');

Так есть идеи по поводу более элегантного решения?

Спасибо. Тим

1 Ответ

0 голосов
/ 26 июня 2019

Вы можете подойти к этому как

$my_str = "<p>Lorem ipsum</p><i:f>hello</i:f><div>some other text</div><qe></qe>";
echo preg_replace("/(<\s*\/?\s*\b(qe|i:f)\b[^>]*\/?\s*>)/i", "", $my_str)
...