strpos () не работает с отрицательным смещением - PullRequest
0 голосов
/ 20 сентября 2018

У меня странный, возможно, что-то глупый, но я слишком долго ломал себе голову над ним.

Я использую strpos (), чтобы увидеть, заканчивается ли строка определенной подстрокой,используя отрицательное смещение длины указанной подстроки согласно документации PHP.Который выполняет поиск x chatacters с конца стога сена, предположительно.

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

Он просто жалуется, что смещение не содержится в строке.Тем не менее, вывод:

string (29) "fullname@company.tld_redacted"

Обнаружена ошибка PHP

Уровень важности: предупреждающее сообщение: strpos (): Смещение не содержится в строке

Можно ясно видеть, что строка намного длиннее 9 символов, так почему она выдает это предупреждение? (И по расширению возвращает FALSE и всегда вызывает мое состояние - неправильно))

Ответы [ 3 ]

0 голосов
/ 20 сентября 2018

вы можете попытаться изменить логику вашего оператора if, таким образом

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

Попробуйте и дайте мне знать, работает ли он для вас

0 голосов
/ 20 сентября 2018

Используйте strrpos вместо strpos .

0 голосов
/ 20 сентября 2018

Поддержка отрицательных смещений была добавлена ​​в PHP 7.1.
Вероятно, вы используете старую версию.
Всегда смотрите раздел Changelog на странице руководства .

...