1

以下に示すように、str_replace を使用してファイルパスを修正しようとしています。

$a="F:\xampp\htdocs\yii\get_smart\Music\mix\English\1636464449";  
$a=str_replace('\\','/', $a);  
echo $a;

戻り値:

F:
mpp/htdocs/yii/get_smart/Music/mix/Englishs6464449

誰かが私が間違っていることを教えてもらえますか?

私のPHPバージョンは5.3.8です

4

3 に答える 3

11

$a の定義に一重引用符を使用する

$a='F:\xampp\htdocs\yii\get_smart\Music\mix\English\1636464449';  

問題はstr_replace二重引用符内に定義された文字列ではありません。バックスラッシュは、その後の文字をエスケープしxます。

于 2012-09-18T20:26:53.453 に答える
3

これは、文字列が二重引用符で囲まれているために発生しているため、文字\xとして解析されています。

実際、それは文字として読み取ろうとして\xamいます。ドキュメント: http://php.net/manual/en/regexp.reference.escape.php

文字列を一重引用符で囲みます (または の前のスラッシュをエスケープしますx)。

于 2012-09-18T20:27:10.523 に答える
0

あなたの問題は、最初の文字列にいくつかのエスケープされたシーケンスがあることです。たとえば、\xam は php で意味があります。\16 にも意味があるようです。str_replace を実行する前に $a をエコーし​​て、結果を確認する必要があります。

于 2012-09-18T20:28:31.487 に答える