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.