得到每一行的第一个字

时间:2013-10-01 14:19:56

标签: php

我需要在$lines中获取每行的第一个字。所以我在这样的每一行都做foreach

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

}

但接下来的部分,我只需抓住第一个单词。所以我在这样的空间爆炸这样做:

$explode = explode(" ", $line);
echo $explode[0];

但是当我使用多行时,这是非常慢的,使用explode()是否有更好更快的解决方案?

6 个答案:

答案 0 :(得分:6)

是的!

$var = substr( $line, 0, strpos( $line, ' ' ) );

substr()使用起始位置(0,开头)和长度修剪字符串:http://php.net/manual/en/function.substr.php

我们使用strpos()来查找搜索短语的第一个匹配项(在本例中为空格)来确定长度:http://php.net/manual/en/function.strpos.php

答案 1 :(得分:3)

使用strpossubstr。使用strpos获取第一个空格的索引,然后使用该索引作为substr的结尾。这将节省你爆炸每一行。

答案 2 :(得分:0)

答案 3 :(得分:0)

使用正则表达式。这应该在第一个空格之前得到匹配。 (?:^|(?:\.\s))(\w+)

答案 4 :(得分:0)

你应该试试这个:

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

请参阅here

答案 5 :(得分:0)

您还可以使用explode限制:

explode(" ", $line, 1);

虽然这比没有限制的explode快得多,但速度不如用户建议的substr()解决方案快:Set Sail Media

在我的100K行测试中,每行约有10K字:

explode       : 175s
explode+limit : 0s
substr()      : 0s

使用1M行,每行约有20K字:

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