Tach!
function escapeRawText($text){ $tests = [ '/<script/ium', // test for forbidden opening tags '/<\/script/ium', // test for forbidden closing tags '/<!--/ium' // test for forbidden opening comments ]; $replacements = [ '<\\\script', '<\\/script', '<\\!--' ]; return preg_replace($tests, $replacements, $text); }
Bist du sicher, dass es drei \
im ersten Replacement sein müssen? Dann kommt in Javascript das Literal '<\\script'
, das als <\script
interpretiert wird, was meines Erachtens nicht richtig ist.
Alternativ könnte man statt \
für Javascript hinzuzufügen, und die dann noch für PHP maskieren zu müssen, auch aus einem Zeichen eine Javascript-Unicode-Escape-Sequenz machen. \u
bleibt innerhalb von PHPs single-quoted Strings unberührt.
dedlfix.