1

私はたくさん検索し、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("@","\\");

まだ何のアイデアも機能していませんか?

4

2 に答える 2

1

二重引用符で囲まれた文字列では、スラッシュがエスケープシーケンスとしてPHPによって処理されるため、このようなstr_replaceを使用しても問題は解決できません。このように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

\にはこの特別な意味があるため、。の内部を\\1つ示すように記述する必要があります。\"...."

したがって、これは次のように設定さ$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 に答える