下面是我的代码,问题是当我输入带有撇号 (') 的任何用户名时,返回搜索结果时会显示附加字符“\ 反斜杠”。
下面是我的代码,我发现在checkusername函数中使用了函数添加斜杠,因此添加了反斜杠。
if ( 0 < count( $my_field_place ))
{
for ( $i = 0; $i < count( $my_field_place ); $i++ )
{
if ( true === isset( $Fields[$i] ))
{
print "gMapping[$i] = new MappingItem( '" .
addslashes( $Fields[$i] ) .
"', '" .
checkusername( $my_field_place[$i] ) .
"' );";
}
}
}
function checkusername($inStr)
{
$orig = array();
$new = array();
$orig[00] = "/\n/`" ; $new[00] = "\\?n";
$orig[01] = "/[^\x-*()]/"; $new[01] = "";
$var1 = preg_replace($orig, $new, $inStr);
$var2 = addslashes($var1 ); // i am not sure why addslashes is used but i am asked not to remove because of security reasion?
return $var2;
}
注意:我 google 发现它是出于安全原因使用的,因为在我的情况下,我们只显示搜索结果。所以我不确定为什么在这里使用这个功能。我的解决方法是在返回之前添加stripslashes () 函数,这将删除由addslashes() 函数添加的反斜杠。请在下面找到代码片段和代码更改的注释:
function checkusername($inStr)
{
$orig = array();
$new = array();
$orig[00] = "/\n/`" ; $new[00] = "\\?n";
$orig[01] = "/[^\x-*()]/"; $new[01] = "";
$var1 = preg_replace($orig, $new, $inStr);
$var2 = addslashes($var1);
return stripslashes($var2); // i am not sure stripslashes is correct fix or not?
}
请帮助添加stripslashes是否可以, 或者有没有其他方法可以处理它?