2012-07-22 47 views
1

是有办法或删除许多附加功能斜杠像下面使用stripslashes()函数PHP函数删除许多和addslashes

\\\\\\\"Oracle DBA\\\\\\\" 

将只删除一个斜杠,

我是否必须使用preg_replace?像这样

preg_replace(/^\\(.*)/,"",$subject); 

与这项工作?

+0

你的第二个例子是无效的PHP语法。缺少引号。反斜杠是字符串元字符,需要被屏蔽两次,以便PCRE看到它。 – mario 2012-07-22 02:34:38

回答

0

你不需要一个正则表达式来做到这一点。只要使用此:

$string = str_replace(array('/', '\\'), '', $string); 
+0

为什么要删除正斜杠? – mario 2012-07-22 02:33:42

2

如果真的所有你想要做的就是替换反斜杠,那么所有你需要的是:

$str = "\\\\\\\"Oracle DBA\\\\\\\""; 
$str = str_replace("\\", "", $str); 

如果你也想斜线删除:

$str = str_replace(array("\\", "/"), "", $str); 

不过,从这里可以得出一个很好的观点:删除所有斜杠可能会破坏你的逃跑。

在这种情况下,负前瞻可能做的伎俩:

$str = preg_replace("/\\\(?!\")/", "", $str); 

应导致`\ “的Oracle DBA \”

编辑:由woopsie。 x2

+0

微观优化:有点整洁的使用硬引号的模式''/ \\\(?!“)/'' – Geo 2012-12-21 20:07:41

0

如果您知道需要删除多少级别的转义,则可以多次运行字符串stripslashes

如果你不那么我不确定你能否完全正确地做到这一点 - 你可以删除所有斜线,但显然你会打破任何应该在那里的斜线。

+0

”如果暴力无法解决问题,那么您的使用不够“ – Roberto 2012-07-22 02:31:01