strpos() 不适用于负偏移量



我有一个奇怪的,可能是愚蠢的东西,但我已经在上面绞尽脑汁太久了。

我正在使用 strpos(( 来查看字符串是否以某个子字符串结尾,根据 PHP 文档使用所述子字符串长度的负偏移量。据说,它从大海捞针的尽头执行搜索 x 聊天者。

var_dump($recipient); //debug
if(strpos( $recipient, '_redacted', -9 ) === FALSE) {
// do stuff
}

它只是抱怨偏移量不包含在字符串中。然而,输出是:

字符串(29( "fullname@company.TLD_redacted">

遇到 PHP 错误

严重性:警告 消息:strpos((:偏移量不包含在字符串中

可以清楚地看到字符串比 9 个字符长得多,那么它为什么要抛出该警告呢?并通过扩展返回 FALSE 并始终触发我的条件 - 不正确(

PHP 7.1 中添加了对负偏移的支持。
您可能运行的是旧版本。
始终在手册页上看到"更新日志"部分。

使用 strrpos 而不是 strpos。

您可以尝试更改if语句的逻辑

var_dump($recipient); //debug
if(strpos( $recipient, '_redacted') === strlen($recipient) - 9) {
// do stuff
}

试试吧,让我知道它是否适合你

最新更新