我应该如何在单引号中添加斜线并忽略双引号?

atw*_*pub 7 php mysql escaping

我应该如何在单引号中添加斜线并忽略双引号?我正在使用PHP.我只想逃避单引号,以防止我的php mysql查询中断.

谢谢!

编辑:我认为正则表达式搜索和替换将是最有帮助的.

Nin*_*nja 14

好吧,我真的很迟到这篇文章,但添加了这个答案,希望它可能有助于有人登陆这个问题.虽然@Weston C已经提供了一个正则表达式解决方案,但是有一个用于执行此操作的php函数 - addcslashes(http://php.net/manual/en/function.addcslashes.php):

string addcslashes ( string $str , string $charlist )
Returns a string with backslashes before characters that are listed in charlist parameter.
Run Code Online (Sandbox Code Playgroud)


JW.*_*JW. 5

一个简单的str_replace("'", "\\'", $string)应该起作用。但是正如上面的Gumbo所述,如果要转义MySQL查询,则应使用库函数。


Wes*_*n C 3

好吧,preg_replace_all("/([^\])'/","$1\'",$yourStrHere)会做你所要求的:

  • "/([^\])'/" 产生正则表达式 /([^\])'/,它表示“匹配任何不是反斜杠后跟单引号的单个字符,并捕获引号之前的字符。 ”
  • “$1\'”表示“替换为捕获的字符,后跟反斜杠和单引号”

但...

Bill 关于使用 mysqli 或 PDO API 进行参数化查询的回答是非常非常好的建议。让你的数据库 API 处理这个问题比你自己处理更容易、更有效——编写这些 API 的人(以及在这些 API 的本机后端工作的人)可能投入了更多的时间和精力来解决安全性和问题。性能问题超出了我们大多数人希望花费的时间。