2017-02-14 19 views
0

私は問題があるようですstrpos() 何らかの理由で、何かの理由で、それは必ずしもfalseを返してはいけません。strposは常にfalseを返します

これは、問題が発生する場所である:

if (strpos($attachment_url, $upload_dir_paths['baseurl']) !== false) { 
    //some code here 
} 

は、私が$attachment_url$upload_dir_paths['baseurl']var_dump作られ、「針」は「干し草の山」で、実際にあったことを確認するために、両方の値を比較してきたことありました。上記var_dump

var_dump($upload_dir_paths['baseurl']); //needle 
var_dump($attachment_url);     //haystack 

結果:

string(39) "//localhost:3000/wp-content/uploads" 
string(67) "//localhost:3000/wp-content/uploads/2016/10/stunning-photograph.jpg" 

if文は常にfalseを返して、なぜ誰もが知っていますか?

おかげ

+0

'if(strpos(" //localhost:3000/wp-content/uploads/2016/10/stunning-photograph.jpg "、" // localhost:3000/wp-content/uploads ")!== false ){ エコー 'はい'; } 'yes yes – RomanPerekhrest

+0

私のために働きます:[https://3v4l.org/UC6pN](https://3v4l.org/UC6pN) –

答えて

0

私はこの問題は、変数$ upload_dir_paths [ 'BASEURL']から来ていると思います。
"// localhost:3000/wp-content/uploads"という文字列は、質問の39とは異なり、35文字で構成されています。
ブラウザや端末では表示できない「隠れた」文字がいくつかあると思います。

この問題を解決するにはどうすればよいですか?
おそらく変数$ upload_dir_paths ['baseurl']に "trim"という関数を試してみてください。それは問題を解決するはずです。

+0

' $ upload_dir_paths ['baseurl'] '文字列をトリミングした後でも、私はまだ取得します39文字は意味をなさない? – Myguel

+0

@Myguelそれは奇妙です。おそらく 'substr($ upload_dir_paths ['baseurl']、5)'を試してみてください。同じ出力ですが、39文字がなければ、隠し文字が削除されたことを意味します。 文字列の文字が削除されている場合は、同じ方法を試してみてください。 'substr($ upload_dir_paths ['baseurl']、0、35)'。 削除された文字が数文字しかない場合は、文字列に隠し文字が含まれているため、削除が難しいようです。 – Ad5001

関連する問題