使用PHP,我必须检测'"(单引号后跟双引号)以防止XSS。因此,我实现了以下功能。
function xss_cleaner_new($input_str){
$return_str = preg_replace('/"\'/','&l', &input_str);
return $return_str;
}
但是,它似乎只检测(第一个单引号)而不是(单引号后跟双引号)
如何成功检测 '"(单引号后跟双引号)?
试试这个:
preg_replace("/'\"/","&l",$input_str);
考虑一下。你说你想要的是匹配一个单引号后跟一个双引号。但只需查看您的正则表达式并仔细考虑即可。
您有一个非插值的 PHP 字符串文字'/"\'/'
被输入到您的函数调用中,其中包含一个转义的撇号。字符串文字的值是/"'/
,所以现在它是一个/
-delineated 正则表达式。去掉/
s 因为我们已经说过它是一个正则表达式,你得到"'
,或者,一个双引号后跟一个单引号,这与你想要的完全相反。换一种方式'"
,我们可以翻转它们('回到你开始的地方,只有你没有错误。/
/'"/
'/\'"/'