Недавно я обнаружил strip_tags()
которая берет строку и список принятых html-тегов в качестве параметров.
Скажем, я хотел избавиться от изображений в строке, вот пример:
$html = '<img src="example.png">'; $html = '<p><strong>This should be bold</strong></p>'; $html .= '<p>This is awesome</p>'; $html .= '<strong>This should be bold</strong>'; echo strip_tags($html,"<p>");
возвращает это:
<p>This should be bold</p> <p>This is awesome</p> This should be bold
следовательно, я избавился от своего форматирования через <strong>
и, возможно, <em>
в будущем.
Мне нужен черный список, а не белый список:
echo blacklist_tags($html,"<img>");
возвращения:
<p><strong>This should be bold<strong></p> <p>This is awesome</p> <strong>This should be bold<strong>
Есть какой-либо способ сделать это?
Если вы хотите удалить теги <img>
, вы можете использовать DOMDocument
вместо strip_tags()
.
$dom = new DOMDocument(); $dom->loadHTML($your_html_string); // Find all the <img> tags $imgs = $dom->getElementsByTagName("img"); // And remove them $imgs_remove = array(); foreach ($imgs as $img) { $imgs_remove[] = $img; } foreach ($imgs_remove as $i) { $i->parentNode->removeChild($i); } $output = $dom->saveHTML();
Вы можете сделать это, написав пользовательскую функцию. Strip_tags () считается более безопасным, хотя, потому что вы можете забыть черный список некоторых тегов …
PS: Некоторые примеры функций можно найти в комментариях на странице strip_tags () php.net