我有一个奇怪的人,可能有些愚蠢,但是我在这上面花了太长时间了。
我正在使用strpos()来查看字符串是否以某个子字符串结尾,方法是根据PHP文档,使用该子字符串的长度的负偏移量。据推测,它从干草堆的末端执行搜索x聊天对象。
var_dump($recipient); //debug
if(strpos( $recipient, '_redacted', -9 ) === FALSE) {
// do stuff
}
它只是抱怨偏移量不包含在字符串中。输出是:
字符串(29)“ fullname@company.tld_redacted”
遇到PHP错误
严重性:警告 消息:strpos():偏移量不包含在字符串中
一个人可以清楚地看到该字符串比9个字符长得多,那么为什么会抛出该警告?(并且通过扩展返回FALSE并始终触发我的条件-错误地触发了该错误)
答案 0 :(得分:4)
PHP 7.1中添加了对负偏移的支持。
您可能正在运行旧版本。
始终参见the manual page上的更改日志部分。
答案 1 :(得分:1)
答案 2 :(得分:-2)
您可以尝试以此方式更改if语句的逻辑
var_dump($recipient); //debug
if(strpos( $recipient, '_redacted') === strlen($recipient) - 9) {
// do stuff
}
尝试一下,让我知道它是否对您有用