Php 获取每行的第一个单词

Php 获取每行的第一个单词,php,Php,我需要得到我的$lines中每行的第一个字。所以我在每一行上都做了一个foreach,如下所示: foreach ($lines as $n => $line) { } $explode = explode(" ", $line); echo $explode[0]; 但是接下来,我只需要抓住第一个单词。所以我在这样的空间里爆炸: foreach ($lines as $n => $line) { } $explode = explode(" ", $line); echo

我需要得到我的
$lines
中每行的第一个字。所以我在每一行上都做了一个
foreach
,如下所示:

foreach ($lines as $n => $line) {

}
$explode = explode(" ", $line);
echo $explode[0];
但是接下来,我只需要抓住第一个单词。所以我在这样的空间里爆炸:

foreach ($lines as $n => $line) {

}
$explode = explode(" ", $line);
echo $explode[0];
但是,当我用很多行进行操作时,速度非常慢,是否有比使用
explode()
更好更快的解决方案?

是的

$var=substr($line,0,strpos($line,”)

substr()
使用起始位置(0,起始)和长度修剪字符串:


我们通过使用
strpos()
查找搜索短语的第一个匹配项(在本例中为空格)来确定长度:

使用和。使用strpos获取第一个空间的索引,然后将该索引用作substr的结尾。这将避免您分解每一行。

使用字符串标记功能
使用正则表达式。这应该在第一个空格之前获得匹配<代码>(?:^ |)(?:\.\s))(\w+)

您应该尝试以下方法:

list($firstWord) = explode(" ",trim($line));
参见

您也可以与限制一起使用:

explode(" ", $line, 1);
虽然这比没有限制的
爆炸
要快得多,但它不如用户建议的
substr()
解决方案:
启航媒体

在我对100K行的测试中,每行大约有10K个单词:

explode       : 175s
explode+limit : 0s
substr()      : 0s
有1M行,每行约20K字:

explode       : too long :-)
explode+limit : 12s
substr()      : 0s

告诉我们一个$line的例子怎么样?你可以在每一行上迭代,直到找到一个空格。这将是你的话。你应该接受答案。这比使用
explode
快多少?它更快,因为它在第一个空间停止,而不是像explode()一样找到每个空间。谢谢@SetSailMedia,它可以工作,而且我的加载时间更好!我会在几分钟内接受你的回答:)这比在太空中爆炸有什么好处?@tborychowski-huh,我不知道。通过谷歌和一些过去对我有用的例子找到了这个网站。@JulianSchaefer这是一个常见的陷阱:信任谷歌。这就像上学接受教育一样:-)我不相信这会比爆炸更快。或者会吗?@UFL1138会更快,因为正则表达式如果使用正确,会在第一次匹配时立即停止,并且与explode相比不会对整个字符串进行操作。不过,实例化正则表达式引擎的开销还是很大的。无论如何,它肯定不会比使用strpos和substr快。每行100万行,大约20个字怎么样?