2016-08-24 6 views
1

ファイルパスによって設定される変数があります。パスは日付に基づいて動的に設定されます。PHP文字列のバックスラッシュの後に数字が続きます

$str = "IMAGES\2016\08\01\NM.jpg" 

注意:バックスラッシュに数字が続くことに注意してください。これはサーバーによって設定され、PHPファイルに到達する前に変更することはできませんが、これらの文字がエンコードされているように見えます。

str_replaceを使用してバックスラッシュをスラッシュに変更しようとしましたが、the php manual on blackslashesの理解によれば、機能が実行される前にエンコードされています。

私の質問はこれです:

は、PHPはその文字列を読んでいる方法を変更する方法はありますか?それが使えるように変更する方法がありますか?

答えて

0

文字列$str内のバックスラッシュが直後の文字をエスケープされて、あなたは、単一引用符を使用することによって、この動作を防ぐことができ、または、バックスラッシュを使用して、バックスラッシュをエスケープすることができます(待ちます...)。

echo $str = "IMAGES\2016\08\01\NM.jpg"; 

結果:IMAGES?68\NM.jpg

echo $str = "IMAGES\\2016\\08\\01\\NM.jpg"; 

結果:脇IMAGES\2016\08\01\NM.jpg

:あなたはstr_replaceまたはpreg_replaceは、2つのバックスラッシュでそれぞれ単一のバックスラッシュを置き換えるために使用することができます。

+0

は感謝ウィリアム、私の主な問題は、バックスラッシュに続く数字は、いくつかの奇妙な方法でエンコードされた二重引用符を使用していた、と私はそれがDBからフェッチされているので、設定された変数の前にそれをエスケープする方法がありませんでした。..私は質問を投稿する前に一重引用符を試したことを誓っていますが、何らかの理由で私が戻ってそれを後で試してみるまでうまくいかなかったのです:)水曜日のケースまでそれを押しつぶしていますか? – zhwatts

+0

私たちは皆、明らかに見えるものを見つめていますが、これはいつまでもクリックするだけです。あなたのためにもっとカフェイン! ...以下。 –

0

うわー、私は大きな馬鹿のように感じます。

$str = 'IMAGES\2016\08\01\NM.jpg' 

これは、一重引用符で動作します....私はあなたが一日中コンピュータの画面を見ていたときに起こることだと思います。

関連する問題