【发布时间】:2014-06-03 13:35:42
【问题描述】:
我正在提取一个 XML 文件并执行各种数据按摩。我将一个元素(没有数据)分配给一个变量并测试该变量是否为空。测试是假的。不知道为什么,我直接测试了元素,它通过了。对此感到困惑,我将变量置于几个条件下,只是为了看看我在处理什么。这让我感到困惑,因为结果对我来说似乎完全不一致。 我输入的代码如下:
$xmldata = simplexml_load_file('data.xml');
$picture = $person->picturefile; <--picturefile is empty
if (!empty($person->picturefile)) {
echo "picture is not empty";
} else {
echo "picture is empty";
}
if (!empty($picture)) {
echo "picture is not empty";
} else {
echo "picture is empty";
}
$tempfile = "members/$picture";
if (file_exists($tempfile)) {
echo "<div class=mgridimg><img src=$tempfile></div>";
}
xml 路径的测试产生一个假条件(图片为空),但变量的测试产生一个真条件(图片不为空)。
我对变量进行了 strlen 测试,结果显示 strlen = 0。
从 xml 文件中,$picture 在填充时有一个文件名。 同样令人费解的是,尽管 $picture 为空,但 file_exists 测试通过了 true。 我还验证了在上面的测试中,$tempfile 包含一个值“members/”。 我无法理解变量的空测试或 file_exists 测试。 我可以围绕这个进行编码,但我想知道为什么我会看到我所看到的。 任何见解都值得赞赏。
【问题讨论】:
-
您是否尝试将其放入十六进制编辑器或 ascii 转换器中以查看是否有一些奇怪的控制字符? krisl.net/cgi-bin/ascbin.pl
-
我在从 xml 元素分配变量 ($picture) 时进行了修剪,现在它在为空时返回为空。目前还不清楚为什么需要修剪。我猜测在将 xml 文件中的空元素分配给变量时,会插入一个空字符,这会导致空测试不通过。这没有意义,但这是我现在能想到的。
标签: php file-exists string