note 106819 deleted from function.strip-tags by danbrown
| From: | danbrown@php.net | Date: | Sun, 11 Dec 2011 19:12:39 +0000 |
| Subject: | note 106819 deleted from function.strip-tags by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-185032@lists.php.net to get a copy of this message | ||
Note Submitter: info at malagadev dot com
----
The function strip_javascript that was developed by nathan@8 in this comments at 08-Mar-2009 06:55
has an error that leads into wrong replacements. Below is the corrected function:
function strip_javascript($filter){
// realign javascript href to onclick
$filter = preg_replace("/href=(['\"]).*?javascript:(.*)?\\1/i",
"onclick=' $2 '", $filter);
//remove javascript from tags
while(
preg_match("/\<(.*)?javascript.*?\(.*?((?\>[^()]+)|(?R)).*?\)?\)(.*)?\>/i",
$filter))
$filter =
preg_replace("/\<(.*)?javascript.*?\(.*?((?\>[^()]+)|(?R)).*?\)?\)(.*)?\>/i",
"<$1$3$4$5>", $filter);
// dump expressions from contibuted content
if(0) $filter =
preg_replace("/:expression\(.*?((?\>[^(.*?)]+)|(?R)).*?\)\)/i", "", $filter);
while(
preg_match("/\<(.*)?:expr.*?\(.*?((?\>[^()]+)|(?R)).*?\)?\)(.*)?\>/i", $filter))
$filter =
preg_replace("/\<(.*)?:expr.*?\(.*?((?\>[^()]+)|(?R)).*?\)?\)(.*)?\>/i",
"<$1$3$4$5>", $filter);
// remove all on* events
while(
preg_match("/\<(.*)?\s+on.+?=?\s?.+?(['\"]).*?\\2\s?(.*)?\>/i",
$filter,$rr) ) {
$filter =
preg_replace("/\<(.*)?\s+on.+?=?\s?.+?(['\"]).*?\\2\s?(.*)?\>/i",
"<$1$3>", $filter);
}
return $filter;
}