我已经搜索了很多并尝试了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("@","\\");
仍然没有任何想法?
答案 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 );