繁体   English   中英

PHP file_exists() 异常

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM