php字符串快速查找,php – strpos是在大量文本中搜索字符串的最快方法吗?

本文探讨了在PHP中使用strpos()函数进行字符串查找的优化方法,解释了如何避免不必要的htmlentities()调用以提高效率,并讨论了strpos()相较于其他函数的优势。

根据PHP手册,yes- strpos()是确定一个字符串是否包含另一个字符串的最快方法.

Note:

If you only want to determine if a particular needle occurs within haystack,

use the faster and less memory intensive function strpos() instead.

这是引用的时间和任何php.net文章关于其他字符串比较器(我从strstr()中拉出一个)

虽然你的声明应该有两个改变.

if (strpos($storage->getMessage($i),'chocolate') !== FALSE)

这是因为如果(0)计算为false(因此不运行),则如果针位于干草堆的最开始(位置0),则strpos()可返回0.此外,删除htmlentities()将使您的代码运行更快.所有这些htmlentities()都是用相应的HTML等价物替换某些字符.例如,它代替每个&与& amp; amp;

您可以想像,单独检查字符串中的每个字符,并替换其中的许多字符是非常内存和处理器.不仅如此,如果您打算进行文字比较,则不必要.例如,比较以下语句:

strpos('Billy & Sally', '&'); // 6

strpos('Billy & Sally', '&'); // 6

strpos('Billy & Sally', 'S'); // 8

strpos('Billy & Sally', 'S') // 12

或者,在更极端的情况下,甚至可能导致一些真实的评估为假.

strpos('

strpos('<img src...','

为了规避这个问题,你最终会使用更多的HTML实体.

strpos('<img src...', '<'); // 0

但是,你可以想象,这不仅是令人厌烦的代码,而且是多余的.你最好完全排除HTML实体.通常HTML实体仅在输出文本时使用.不比较

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值