繁体   English   中英

在内部使用PHP strpos()函数,如果循环无法按预期工作?

[英]Using PHP strpos() function inside and if loop won't work as expected?

我有一个字符串作为文件名,并且仅在文件名不包含图像扩展名的情况下才显示。

这是字符串结构:

this-file-1.jpg
other_file.pdf
and-yet_another--file.zip
and-another-one.png

我试过了:

if ( strpos($value, 'jpg') === FALSE) {
    echo $mostrarArchivos;
}

它确实有效,但是当我尝试这样做时却无效:

if ( strpos($value, 'jpg') === FALSE ||
    strpos($value, 'jpeg') === FALSE ||
    strpos($value, 'png') === FALSE ||
    strpos($value, 'gif') === FALSE
) {
    echo $mostrarArchivos;
}

从某种意义上说,它确实显示了带有文件名的字符串,即使该字符串显示了whatever.jpg

我确实意识到应该以不同的方式进行操作,因此任何建议都值得欢迎。

这似乎是一个更简单,更灵活的解决方案,因为您可以随时在$invalid数组中轻松添加或删除扩展名。 这也将确保您正在测试实际的扩展名,而不是正巧匹配要忽略的扩展名的文件名部分中的字符序列。

$invalid = ['jpg','gif','png'];

$filename = 'hello_world.png';

if ( ! in_array(pathinfo($filename, PATHINFO_EXTENSION), $invalid) ) {
    echo 'VALID EXTN ' . $filename . PHP_EOL;
} else {
    echo 'INVALID EXTN '  . $filename . PHP_EOL;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM