2012-03-29 70 views
0

我的PHP应用程序通过addslashes()将反斜杠添加到许多位置的引号中。不幸的是,这种添加产生了类似于以下的输出。如何停止重复反斜杠?

每次刷新我的页面时,此字符串的反斜杠数量都会增加。


唐\ '吨
不要\\' T
不要\\\\ 'T
不要\\\\\\\\' T

等。

我想编写一个删除所有这些额外反斜杠的函数。我试过

str_replace($text, "\\\\", ""); 

无济于事。

+1

发布你的代码会有帮助。它可能是一个神奇的引号问题,或者你如何使用你的addslashes,或者......代码总是最好的方式来获得你的代码问题的具体帮助。但是我倾向于仅使用stripslashes作为输出,或者仅在推测的数据库提交之前使用addslashes。 – Blake 2012-03-29 01:11:40

+2

我认为合理的解决方案是不要调用addslashes()。相反,只需在需要时手动添加斜线。 – Kristian 2012-03-29 01:11:44

回答

1

你可能只需要使用:

stripslashes($text); 
1
$text=preg_replace('/\134+/',"\134",$text); 
1

会发生什么,如果你的实际值恰好包括\\合法?例如,如果您的内容是指Windows风格的共享参考 - \\192.168.1.1\foo。如果你盲目地去掉任何双斜杠,你会去掉那些意思是也在那里。

“正确”的答案实际上是不需要斜线添加到不需要它们的东西。你应该知道给定的值是否已经被转义(毕竟,你是一个控制每个值来自哪里的地方,以及它被用于什么地方)并且只在你需要的时候增加斜线。