我需要在$lines
中获取每行的第一个字。所以我在这样的每一行都做foreach
:
foreach ($lines as $n => $line) {
}
但接下来的部分,我只需抓住第一个单词。所以我在这样的空间爆炸这样做:
$explode = explode(" ", $line);
echo $explode[0];
但是当我使用多行时,这是非常慢的,使用explode()
是否有更好更快的解决方案?
答案 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)
答案 2 :(得分:0)
答案 3 :(得分:0)
使用正则表达式。这应该在第一个空格之前得到匹配。 (?:^|(?:\.\s))(\w+)
答案 4 :(得分:0)
答案 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