在给定一组常量因子的情况下,在字符串中搜索字符串的最快方法


Fastest way to search for string within a string, given a set of constant factors

我有一个长字符串,其中我需要确定是否出现短字符串。这听起来很简单,事实上,使用strpos我可以执行

strpos($longstr, $shortstr);

这将完成工作,然而,有一些事实我可以肯定:

  • 短字符串总是从新行开始
  • 短字符串将始终为10个字符长(多字节)
  • 短字符串将始终以字符"ча"开头
  • 短字符串总是以第10个字符后的新行结束
  • 短字符串只能出现一次,以后再出现都没有意义,可以忽略

考虑到以上条件,在新行上0以外的任何位置搜索有问题的字符串都没有意义,但是,如果我不遍历整个长字符串,我怎么能知道新行在哪里。

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

您可以explode()(http://php.net/explode)您在"''n"字符上的$longstr,并迭代结果。。。但老实说,由于您必须在PHP中执行此操作,我确信直接调用strpos()会更快。

如果你能想出一个正则表达式,这可能会奏效——但我认为这会比strpos()慢。