Skip to content

Instantly share code, notes, and snippets.

@nawawi
Created March 26, 2016 11:41
Show Gist options
  • Save nawawi/01569e0c195591fcbc34 to your computer and use it in GitHub Desktop.
Save nawawi/01569e0c195591fcbc34 to your computer and use it in GitHub Desktop.
remove script from html
function _noscript($str) {
if ( is_array($str) ) return $str;
$str = preg_replace(
array(
'#<\s*frameset[^>]*?>.*?<\s*/\s*frameset\s*>#si',
'#<\s*iframe[^>]*?>.*?<\s*/\s*iframe\s*>#si',
'#<\s*script[^>]*?>.*?<\s*/\s*script\s*>#si',
'#<\s*object[^>]*?>.*?<\s*/\s*object\s*>#si',
'#<\s*embed[^>]*?>.*?<\s*/\s*embed\s*>#si',
'#<\s*applet[^>]*?>.*?<\s*/\s*applet\s*>#si',
'#<\s*noscript[^>]*?>.*?<\s*/\s*noscript\s*>#si',
'#href="javascript:#si',
'#href=\'javascript:#si',
'#href=javascript:#si'
),
array('','','','','','','','href="','href=\'','href='),
$str
);
if ( !is_null($str) && $str != "" && extension_loaded('dom') ) {
libxml_use_internal_errors(true);
$dom = new DOMDocument();
@$dom->loadHTML($str);
$nodes = $dom->getElementsByTagName('*');
if ( is_object($nodes) ) {
foreach($nodes as $node) {
for($i = $node->attributes->length -1; $i >= 0; $i--) {
$attribute = $node->attributes->item($i);
if ( preg_match("/^on\S+/", $attribute->name) ) {
$node->removeAttributeNode($attribute);
}
}
}
$str = $dom->saveHTML();
}
}
return $str;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment