1

我进行了很多搜索并尝试了 javascript replace() 函数和 str_replace,addslashes ,以及带斜杠,但我没有得到正确的输出。

这就是我正在做的事情:

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("@","\\");

仍然没有任何想法?

4

2 回答 2

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";
于 2012-08-07T22:21:29.133 回答
0

你要达到什么目标?将单曲替换\\\?

请注意,那

  "\\"

表示单个的字符串\。这是因为,在使用的内部添加\了转义序列的前缀"..."

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

由于 \ 具有此特殊含义,因此您需要编写\\以表示单个\内部"...."

因此,这将设置$resultStringC:wamp\\www\\desi\\uploads\\artist\\bg\\9.jpg

$sourceString = "C:wamp\www\desi\uploads\artist\bg\9.jpg";
$resultString = str_replace( "\\", "\\\\", $sourceString );
于 2012-08-07T22:21:44.237 回答