【发布时间】:2022-01-04 16:29:06
【问题描述】:
我正在为 PHP 中的一种行为而苦苦挣扎,最后需要在 stackoverflow 上注册,因为我第一次找不到任何问题的答案! :D
在我的代码中,我从文本区域(多行)获取以下内容:
10001;11;;;1;3;
10002;11;;;1;3;
10003;11;;;1;3;
我首先用explode("\n", $string); 分解几行。
二、我爆了每一行的元素:explode(";", $string[0]);
key 6的内容为空,但是PHP只识别最后一行的最后一个元素为空:
用线条分解
explode("\n", $string);
Array ( [0] => 10001;11;;;1;3; [1] => 10002;11;;;1;3; [2] => 10003;11;;;1;3; )
用
分解第一行explode(";", $string[0]);
Array ( [0] => 10001 [1] => 11 [2] => [3] => [4] => 1 [5] => 3 [6] => )
第一行的最后一个元素是空的吗?
( if(empty($line1[6]) )
没有。
第二行用
explode(";", $string[1]);
Array ( [0] => 10002 [1] => 11 [2] => [3] => [4] => 1 [5] => 3 [6] => )
第二行的最后一个元素是空的吗?
( if(empty($line2[6]) )
没有。
第三行用
explode(";", $string[2]);
Array ( [0] => 10003 [1] => 11 [2] => [3] => [4] => 1 [5] => 3 [6] => )
第三行最后一个元素是空的吗?
( if(empty($line3[6]) )
是的
谁能告诉我,为什么 PHP 总是说只有最后一行的最后一个元素是空的,尽管每个最后一个元素都是空的?
非常感谢您!
【问题讨论】:
-
我唯一能想到的是行尾是
\r\n,而不是\n。您可以使用PHP_EOL而不是"\n"进行初始爆炸。如果它们不为空,您可以使用var_dump($line1[6]);查看这些行所包含的内容 -
不可重现,使用显示的代码,并假设行以
\n结尾:sandbox.onlinephpfunctions.com/code/…。但是,如果正如任何人所暗示的那样,行尾实际上是\r\n:sandbox.onlinephpfunctions.com/code/… -
添加您的表单代码。并告诉我们浏览器和平台。
-
array_map('trim', explode("\n", $string)) -
P.S. var_dump 为您提供比 print_r 更详细的反馈,包括字符串的长度 - 其内容可能不包含任何可见字符....