Ik ben bezig met een functie die javascript filtert.
Dit werkt prima, enkel gaat het fout op het moment dat er enters staan.
Mijn functie:
Het gaat om de bovenste preg_replace. Deze gaat fout op het moment dat er iets als:
<script>
blaat()
</script>
staat, en dat komt omdat er enters instaan. Op het moment dat het op 1 regel staat gaat het wel goed. html moet wel mogelijk blijven dus htmlspecialchars() heeft geen zin. striptags() ook al naar gekeken maar daarmee kan ik alleen aangeven welke tags WEL mogen, en niet welke tags ik wil strippen. Het gaat nml alleen maar om de <script> tag.
iemand die me hiermee kan helpen?
Dit werkt prima, enkel gaat het fout op het moment dat er enters staan.
Mijn functie:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| function noScript($string) { //Strip <script> tags $match = "/<script(.*)>(.*)<\\/script>/"; $string = preg_replace($match, "<div>test</div>", $string); //Strip links who execute javascript. $match = "/href=(['\"]).*?javascript:(.*)(['\"])/"; $string = preg_replace($match, "href='#'", $string); // strip onClick events $match = "/onclick=(['\"])(.*)(['\"])/"; $string = preg_replace($match, "", $string); return $string; } |
Het gaat om de bovenste preg_replace. Deze gaat fout op het moment dat er iets als:
<script>
blaat()
</script>
staat, en dat komt omdat er enters instaan. Op het moment dat het op 1 regel staat gaat het wel goed. html moet wel mogelijk blijven dus htmlspecialchars() heeft geen zin. striptags() ook al naar gekeken maar daarmee kan ik alleen aangeven welke tags WEL mogen, en niet welke tags ik wil strippen. Het gaat nml alleen maar om de <script> tag.
iemand die me hiermee kan helpen?
Roses are red, violets are blue, unexpected '{' on line 32.