我需要在我的$lines
. 所以我foreach
在每一行都这样做:
foreach ($lines as $n => $line) {
}
但接下来的部分,我只需要抓住第一个词。所以我通过在这样的空间上爆炸来做到这一点:
$explode = explode(" ", $line);
echo $explode[0];
但是当我用很多行来做这件事时,这非常慢,有没有比使用更好更快的解决方案explode()
?
我需要在我的$lines
. 所以我foreach
在每一行都这样做:
foreach ($lines as $n => $line) {
}
但接下来的部分,我只需要抓住第一个词。所以我通过在这样的空间上爆炸来做到这一点:
$explode = explode(" ", $line);
echo $explode[0];
但是当我用很多行来做这件事时,这非常慢,有没有比使用更好更快的解决方案explode()
?
是的!
$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
使用正则表达式。这应该在第一个空格之前得到匹配。(?:^|(?:\.\s))(\w+)
您还可以使用带限制的爆炸:
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