Использование функции PHP strpos () внутри, и если цикл не будет работать, как ожидалось? - PullRequest
0 голосов
/ 30 ноября 2018

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

Это строковые структуры:

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

Я понимаю, что это должно быть сделано по-другому, поэтому любое предложение более чем приветствуется.

1 Ответ

0 голосов
/ 30 ноября 2018

Это выглядит как гораздо более простое и гибкое решение, так как вы можете легко добавлять или удалять расширения для массива $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;
}
...