2

$myImg 変数が一部のローカル html から抽出され、確認したいファイルを指しています。文字列変数 file_exists を使用すると false になりますが、コンテンツ os 変数を手動で挿入すると true になります。

var_dump($myImg);

出力:string(26) "content/images/1107_16.jpg"

var_dump(file_exists($myImg));

出力:bool(false)

var_dump(file_exists("content/images/1107_16.jpg"));

出力:bool(true)

どのようにそれが起こることができますか? 事前に助けてくれてありがとう

4

7 に答える 7

6

の長さは でcontent/images/1107_16.jpgはない45ので、明らかに他の文字があります。変数をトリミングしてみてください。

于 2011-07-13T08:45:33.120 に答える
1
riad@riad-desktop:~$ php -r 'print(strlen("content/images/1107_16.jpg"));'
26

だから、あなたの文字列は悪いです(多分最後に悪い文字(\ 0?)で構成されています

于 2011-07-13T08:46:11.727 に答える
1

以下を使用して結果を比較することをお勧めしますbin2hex()

var_dump(bin2hex($myImg));
var_dump(bin2hex("content/images/1107_16.jpg"));

異なる文字セットの問題のようです。

于 2011-07-13T08:53:51.847 に答える
0

文字列に印刷できない文字が含まれているか、別の文字エンコードが使用されているようです。

var_dump ("content/images/1107_16.jpg");
string(26) "content/images/1107_16.jpg"

これは26バイトを正しく報告することに注意してください-これはASCII(またはUTF-8)で正しいでしょう。上で報告された45バイトは、ある種のマルチバイトエンコーディングのように見えます。

于 2011-07-13T08:47:16.937 に答える
0
string(45) "content/images/1107_16.jpg" 

長い間文字数を減らす必要があります:

trim($myImg)

スペースチャーを削除するには

于 2011-07-13T08:48:22.333 に答える
0

おそらく、$myImg の目に見えない文字ですか? ラインブレイクみたいなもの?

于 2011-07-13T08:45:42.863 に答える
0

file_exists メソッドに渡す前に文字列を変換してみてください

$myImg = mb_convert_encoding($myImg, "UTF-8");

さらに、汚れた文字列に付加された他の不要な文字をいつでもトリミングできます。

于 2011-07-13T08:52:12.583 に答える