PHP文件_exists()异常

PHP文件_exists()异常,php,file-exists,Php,File Exists,我遇到了这个wierd问题:$myImg变量是从一些本地html中提取出来的,它指向一个我想检查的文件。对于字符串变量file_exists,给出false,但如果手动插入content os变量,则给出true var_dump($myImg) 输出:string(26)“content/images/1107_16.jpg” 输出:bool(假) 输出:bool(真) 怎么会这样? 感谢您提前提供的帮助内容/图像/1107_16.jpg的长度不是45,因此显然还有其他字符。尝试修剪变量。可能

我遇到了这个wierd问题:$myImg变量是从一些本地html中提取出来的,它指向一个我想检查的文件。对于字符串变量file_exists,给出false,但如果手动插入content os变量,则给出true

var_dump($myImg)

输出:
string(26)“content/images/1107_16.jpg”

输出:
bool(假)

输出:
bool(真)

怎么会这样?
感谢您提前提供的帮助

内容/图像/1107_16.jpg
的长度不是
45
,因此显然还有其他字符。尝试修剪变量。

可能是$myImg中的某个不可见字符?像断线之类的

riad@riad-desktop:~$ php -r 'print(strlen("content/images/1107_16.jpg"));'
26

因此,您的字符串是错误的(可能由错误的字符(\0?)组成)

您的字符串中似乎有一些无法打印的字符,或者使用了不同的字符编码:

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" 
应减少长时间使用的chars,请尝试:

trim($myImg)

要删除空格字符

请尝试在将字符串传递到文件之前对其进行转换

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

此外,您可以随时修剪附加到脏字符串的其他不需要的字符。

我提供给您使用
bin2hex()
比较结果:


这似乎是不同字符集的问题。

Offtopic:对于检查文件,我建议使用as检查文件和目录。
trim($myImg)
$myImg = mb_convert_encoding($myImg, "UTF-8");
var_dump(bin2hex($myImg));
var_dump(bin2hex("content/images/1107_16.jpg"));