Поскольку этот вопрос помечен regex Я собираюсь ответить решением бедняка в этой ситуации:
$html = preg_replace('#<script(.*?)>(.*?)</script>#is', '', $html);
Однако регулярные выражения не предназначены для парсинга HTML / XML, даже если вы напишите выражение perfect , оно в конце концов сломается, оно того не стоит, хотя в некоторых случаях полезно быстро исправить некоторую разметку и, как и в случае с быстрыми исправлениями, забудьте о security . Используйте regex только для контента / разметки, которым вы доверяете.
Помните, что все, что вводит пользователь, следует считать небезопасным .
Лучше решение здесь будет использовать 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, потому что даже это может bork .