我正在尝试打开一个文本文件并将其中的名称列表分解为一个数组但是当我var_dump
新数组时,我得到了这个:
array(1) { [0]=> string(61) "name name name name " }
列表的全部内容都会进入数组中的一个单一键字段。
这是我正在使用的代码:
$ingame_list = file_get_contents('../../../../home/folder/folder/list.txt');
$newarray = explode(" ", $ingame_list);
var_dump($newarray);
如何让每个名称都在新数组中的自己的关键字段中?
答案 0 :(得分:10)
tl; dr 您的列表由除简单空格之外的其他内容分隔 - 很可能是多个相邻的空白字符。您实际上正在看到数据的HTML呈现,其中多个相邻的空白字符显示为一个。
请注意string(61)
结果中的var_dump()
。 var_dump()
报告变量的类型,长度和内容(如果是字符串)。 string(61)
表示字符串中有61个字符。所以,如果你真的回到字符串"name name name name "
,这意味着你在这里没有看到的字符。这可能是因为HTML中显示空白的方式:制表符,换行符和其他空白字符都看起来像简单的空格。你确定文本是用空格分隔的,而不是标签或其他空格吗?
explode()
只会将完全匹配的字符串拆分为指定的字符/字符串。如果文字由\t
,\n
,\r
或其他非打印字符分隔,则您的explode()
语句将无效。例如,如果你有这个:
name name name
(假装这些是上面的制表符),然后你的explode()
找不到任何普通的旧空格(,字符值32)字符。
如何解决此问题
根据您的评论,您的数据包含换行符(\n
),而不是普通空格。您需要用以下代码替换代码的第二行:
$newarray = explode("\n", $ingame_list);
答案 1 :(得分:2)
如果他们被换行分开,那么你甚至不需要爆炸:
$newarray = file('../../../../home/folder/folder/list.txt');