PHP explode函数与file_get_contents一起使用?

3
   <?php
$str = "Hello world. It's a beautiful day.";
print_r (explode(" ",$str));
?>

以上代码将数组作为输出打印出来。
如果我使用

<?php
$homepage = file_get_contents('http://www.example.com/data.txt');
print_r (explode(" ",$homepage));
    ?>

然而,它不会以数组形式在文本文件中显示单个数字。

最终我想从文本文件中读取数字并打印它们的频率。data.txt有100,000个数字,每行一个。


你得到任何结果了吗?你确定数字没有被其他空格字符分隔,比如制表符吗? - Lekensteyn
当我使用 "\n" 时,我得到了结果。 - user244333
5个回答

8

新行不是空格。您需要在适当的换行字符组合处进行拆分。例如,对于Linux:

explode("\n",$homepage)

或者,你可以使用preg_split 和字符组\s,它匹配每个空白字符:

preg_split('/\s+/', $homepage);

另一个选项(也许更快)是使用fgetcsv


5
如果您想将文件内容作为行数组获取,已经有一个内置函数。
var_dump(file('http://www.example.com/data.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES));

请参阅手册:file()

0

0
你可以使用正则表达式来解决它:
$homepage = file_get_contents("http://www.example.com/data.txt");
preg_match_all("/^[0-9]+$/", $homepage, $matches);

这将给你变量$matches,其中包含一个带有数字的数组。这将确保仅检索具有数字的行,以防文件格式不正确。


0

您没有使用正确的字符来分割字符串。您需要使用换行符 (\n) 进行分割,或者使用正则表达式(速度较慢但更健壮)。在这种情况下,请使用 preg_split


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接