提问人:Rodrigo 提问时间:10/25/2022 最后编辑:Rodrigo 更新时间:10/25/2022 访问量:67
file_exists Linux 上找不到包含 & 号的文件名
file_exists can't find filename including ampersand on Linux
问:
我有两个文件:一个叫,另一个叫.对于每个,我运行以下 PHP 代码:AB.txt
A&B.txt
echo "[$arq]";
if (file_exists($arq)) {
echo '[found]';
} else {
echo '[none]';
}
输出为 和 。[AB.txt] [found]
[A&B.txt] [none]
我尝试用内部替换,但它也不起作用。而且这似乎不是(缺乏)UTF-8 的问题。&
\&
file_exists()
为什么?我在一台 Linux (Debian 11) 机器上,使用 PHP 7.4。
编辑
var_dump(scandir('.'));
返回数百个文件(实际上它们位于子目录中,但让我们假装它们不是)。我已从下面的列表中删除了所有其他文件。
array(352) { [302]=> string(7) “A&B.txt” [303]=> string(6) “AB.txt” }
编辑 2
var_dump($f = "diffA&B.txt", file_exists($f), touch($f), file_exists($f));
字符串(11) “diffA&B.txt” bool(false) bool(true) bool(true)
答: 暂无答案
评论
$arq
var_dump($arq);
A&B.txt
string(7) "A&B.txt"
var_dump()