为什么这个独立代码不起作用:
$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 />';
}
}
Run Code Online (Sandbox Code Playgroud)
即使https包含在$link变量中,每次打印都是可接受的.
cor*_*ard 60
如有疑问,请阅读文档:
[strpos]返回haystack字符串中第一次出现needle的数字位置.
所以你想尝试更像的东西:
// ...
if (strpos($link, $unacceptable) !== false) {
Run Code Online (Sandbox Code Playgroud)
因为否则strpos返回一个数字,而你正在寻找一个布尔值true.
你的失败情况是错误的.
如果未找到匹配,则strpos返回false,因此您需要显式检查
if (strpos($link, $unacceptable) !== false) {
Run Code Online (Sandbox Code Playgroud)