[英]PHP file_exists() anomaly
我遇到了这个奇怪的问题:$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)
怎么会发生? 感谢您提前提供任何帮助
content/images/1107_16.jpg
的长度不是45
,所以显然还有其他字符。 尝试修剪变量。
riad@riad-desktop:~$ php -r 'print(strlen("content/images/1107_16.jpg"));'
26
所以,你的字符串是坏的(可能包含一个坏字符(\ 0?)最后
我建议您使用bin2hex()
比较结果:
var_dump(bin2hex($myImg));
var_dump(bin2hex("content/images/1107_16.jpg"));
看来这是不同字符集的问题。
也许你的 $myImg 中有一些不可见的字符? 像换行符之类的东西?
您的字符串中似乎有一些不可打印的字符,或不同的字符编码:
var_dump ("content/images/1107_16.jpg");
string(26) "content/images/1107_16.jpg"
请注意,这正确地报告了 26 个字节——这对于 ASCII(或 UTF-8)来说是正确的。 上面报告的 45 个字节看起来像是某种多字节编码。
string(45) "content/images/1107_16.jpg"
应该少一些字符长试试:
trim($myImg)
删除空格字符
在将字符串传递给 file_exists 方法之前尝试转换字符串
$myImg = mb_convert_encoding($myImg, "UTF-8");
此外,您始终可以修剪附加到脏字符串的其他不需要的字符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.