在php中添加双反斜杠到单个

时间:2012-08-07 22:11:13

标签: php javascript regex

我已经搜索了很多并尝试了javascript replace()函数和str_replace,addslashes,strip slashes以及我没有得到正确的输出。

这就是我正在做的事情:

str_replace("\\","\\\\", "C:wamp\www\desi\uploads\artist\bg\9.jpg";

我得到的输出是:

C:wampwwwÞsiuploads\A rtist\B g .jpg

然后我尝试了另一种方式:

var clean=  "<?php echo str_replace("\\","@",LINKCONSTANT); ?>".replace("@","\\");

仍然没有任何想法?

2 个答案:

答案 0 :(得分:1)

使用类似的str_replace无法解决问题,因为双引号中的字符串会将PHP处理的斜杠作为转义序列处理。像这样使用str_replace不会解决PHP(或javascript)处理字符串转义的问题 - 一旦你有一个反斜杠到一个字符串,它将非常忠实地保留在那里。

但是字符串常量将在单引号中起作用,如下所示:

'C:wamp\www\desi\uploads\artist\bg\9.jpg'

但正如其他地方指出的那样,Windows中的目录分隔符在内部处理为“/”或“\”,所以只需使用“/”(对于api调用),你就可以了。

如果您希望输出一个可以安全地被javascript解析的字符串,请执行以下操作:

echo "var str = ".json_encode('C:wamp\www\desi\uploads\artist\bg\9.jpg').";";

将以兼容javascript的方式输出:

var str = "C:wamp\\www\\desi\\uploads\\artist\\bg\\9.jpg";

答案 1 :(得分:0)

你打算做什么?将\替换为\\

请注意,

  "\\"

表示单个\的字符串。这是因为"..."内部使用了\ prefixes an escape sequence

  \r  ->  Return
  \t  ->  Tabular
  \n  ->  Newline

由于\具有这种特殊含义,您需要在\\内写\来表示单个"...."

因此,这会将$resultString设置为C:wamp\\www\\desi\\uploads\\artist\\bg\\9.jpg

$sourceString = "C:wamp\www\desi\uploads\artist\bg\9.jpg";
$resultString = str_replace( "\\", "\\\\", $sourceString );