简单的PHP strpos函数不起作用,为什么?

2022-08-30 15:01:00

为什么这个独立代码不起作用:

$link = 'https://google.com';
$unacceptables = array('https:','.doc','.pdf', '.jpg', '.jpeg', '.gif', '.bmp', '.png');

foreach ($unacceptables as $unacceptable) {
        if (strpos($link, $unacceptable) === true) {
            echo 'Unacceptable Found<br />';
        } else {
            echo 'Acceptable!<br />';
        }
}

即使变量中包含 https,每次打印都是可以接受的。$link


答案 1

如有疑问,请阅读文档

[结构]返回大海捞针字符串中第一次出现的针的数字位置。

所以你想尝试更多的东西:

// ...
if (strpos($link, $unacceptable) !== false) {

因为否则返回一个数字,而您正在寻找一个布尔值。strpostrue


答案 2

strpos() 在找到匹配项时不返回 true,它返回第一个匹配字符串的位置。注意,如果匹配项是字符串的开头,它将返回一个零索引,除非您使用 === 运算符,否则该索引将作为等于 false 进行比较。


推荐