2015-03-31 82 views
3

我看到关于该主题的问题很多,但请随身携带。在给定一组常数因子的情况下,在字符串中搜索字符串的最快方法

我有一个很长的字符串,其中我需要确定是否存在短字符串的发生。这听起来很简单,它就是利用strpos我可以执行

strpos($longstr, $shortstr); 

这将完成这项工作,但也有一些事实,我知道肯定:

  • 短串总会开始一个新行
  • 短串永远是10个字符长(多字节)
  • 短期字符串将始终以字符“чь”
  • 启动短期字符串将始终与第10字符
  • 短串后一个新行结束只能出现一次,其发生是毫无意义的,忽略

铭记上述条件,它是没有意义的搜索对于新行中除0以外任何位置的字符串,如果我不经过整个长字符串,怎么才能知道新行的位置。

strpos相比,在完成工作时有什么可以改进的方面,性能方面?

回答

3

你可能会爆炸()(http://php.net/explode)你的$ longstr在“\ n”字符上,并迭代结果......但说实话,既然你必须在PHP中这样做,我很确定直线strpos()调用会更快。

如果你能想出一个正则表达式,那可能会起作用 - 但我认为这会比strpos()慢。

+1

一致认为,使用'strpos'应该是最快的方法 - 不需要过分复杂化已经存在一个非常简单的解决方案。 – CBroe 2015-03-31 14:08:31

+0

我会一直测试这些建议。如何做好整个工作实际上比想办法做更少的工作要快得多。 – 2015-03-31 14:10:30

+0

如果第n次出现有趣,那将会更加复杂,但是对于第一个'strpos'感兴趣似乎是最好的解决方案:最快和最有效的内存。 – yergo 2015-04-01 08:05:21

相关问题