How to remove javascript from html files and leaving plain text?
É uma pergunta interessante, pois eu acho que destaca outro problema com o uso do regex para análise de marcação, manutenção.
Se você tiver o php disponível em seu sistema, este script fará isso
#!/usr/local/bin/php
# point the #! to wherever your PHP commandline binary is
<?php
error_reporting(1);
$html = file_get_contents('http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags');
// create an object representing the DOM tree of the webpage
$document = new DOMDocument;
$document->loadHTML($html);
// store the <script> elements as a DOMN
$script_nodes = $document->getElementsByTagName('script');
// For some reason you can't use the DOMNode::removeChild method
// when iterating through an instance of PHP's DOMNodeList
// so use an array to queue the values in. see
// http://php.net/manual/en/domnode.removechild.php
$scripts_to_remove = [];
for ( $i=0; $i < $script_nodes->length; $i++ ) {
$scripts_to_remove[] = $script_nodes->item($i);
}
// now we can iterate through the <script> nodes removing them
foreach ( $scripts_to_remove as $s_node ) {
$parent = $s_node->parentNode;
$parent->removeChild($s_node);
}
// print out the new DOM as HTML
echo $document->saveHTML();
Uso
Para usar o script, configure um arquivo contendo o código acima, torne-o executável, execute-o e redirecione a saída para um arquivo, o arquivo deve conter o HTML removido das tags <script>
.