Поскольку этот вопрос помечен тегами regex, я собираюсь ответить бедным решением в этой ситуации:
$html = preg_replace('#<script(.*?)>(.*?)</script>#is', '', $html);
Однако регулярные выражения не предназначены для синтаксического анализа HTML / XML, даже если вы напишете идеальное выражение, оно в конечном итоге сломается, оно того не стоит, хотя в некоторых случаях полезно быстро исправить некоторую разметку и как это бывает с быстрыми исправлениями, забудьте о безопасности. Используйте регулярное выражение только для контента / разметки, которым вы доверяете.
Помните, что все, что вводит пользователь, следует считать небезопасным.
Лучшим решением здесь было бы использовать DOMDocument
, который предназначен для этого. Вот фрагмент, демонстрирующий, насколько легко, чисто (по сравнению с регулярным выражением), (почти) надежно и (почти) безопасно делать то же самое:
<?php
$html = <<<HTML
...
HTML;
$dom = new DOMDocument();
$dom->loadHTML($html);
$script = $dom->getElementsByTagName('script');
$remove = [];
foreach($script as $item)
{
$remove[] = $item;
}
foreach ($remove as $item)
{
$item->parentNode->removeChild($item);
}
$html = $dom->saveHTML();
Я удалил HTML намеренно, потому что даже это может сработать.
person
Dejan Marjanović
schedule
20.08.2011
mysql_*
функции в php. - person Madara's Ghost   schedule 20.08.2011