在内部使用 PHP strpos() 函数并且 if 循环无法按预期工作?
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;
}
我有一个文本字符串,它是一个文件名,我只想在文件名不包含图像扩展名时显示它。
这是字符串结构:
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;
}