php - 给定一组常数因子,在字符串中搜索字符串的最快方法

标签 php string

我有一个长字符串,我需要判断其中是否出现了一个短字符串。听起来很简单,就是,使用 strpos 我可以执行

strpos($longstr, $shortstr);

这样可以完成工作,但我确实知道一些事实:

  • 短字符串总是在新行开始
  • 短字符串的长度始终为 10 个字符(多字节)
  • 短字符串将始终以字符“чь”开头
  • 短字符串总是在第 10 个字符后换行结束
  • 短字符串只能出现一次,再出现无意义,忽略

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

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

最佳答案

你可以 explode() ( http://php.net/explode ) 你的 $longstr 在 "\n"字符上,并迭代结果......但老实说,因为你必须在 PHP 中这样做,我很漂亮确保直接调用 strpos() 会更快。

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

关于php - 给定一组常数因子,在字符串中搜索字符串的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29370257/

相关文章:

php - 如何检查 xml 远程 url 是否存在,如果不存在则使用缓存的本地文件

php - Mysql 检查 WHERE 字段 IN (multiple_values)

php - 如何同时使用$_GET和# anchor 链接?

php - Wordpress 忽略 URL 中的 Unicode 字符

java - 如何计算字符串中字母文字的数量?

c - 字符串附加功能不起作用

javascript - PHP 文件无法从 Jquery ajax 读取多个参数

java - 传递 2 个字符串以用于新 Activity

.net - C++ 中的 BSTR 和 SysAllockStringByteLen()

r - 获取R中字符串第一个大写字母的索引?