str_contains() 给出 HTTP 错误 500 | WordPress的

str_contains() gives HTTP ERROR 500 | Wordpress

我正在尝试获取所有扩展名为 jpeg、jpg 或 png 且标题包含“100x100”文本的文件的列表。

我可以轻松获得按扩展名过滤的文件列表,这工作正常,但是当我向其中添加条件时 && str_contains($value,'100x100') 然后页面不工作并显示 HTTP ERROR 500

函数:

function scan_files(){
    $upload_dir = wp_upload_dir();
    $folder = $upload_dir['basedir'];
    $files = list_files( $folder );
    
   foreach($files as $value){
    if(pathinfo($value, PATHINFO_EXTENSION)=='jpeg'||pathinfo($value, PATHINFO_EXTENSION)=='jpg'||pathinfo($value, PATHINFO_EXTENSION)=='png' && str_contains($value,'100x100')){

        $filtered_files[] = $value;
            }
    
        }
        echo "<pre>";
        print_r($filtered_files);
    }

有人能帮忙吗?

更新

根据@luk2302 的评论,我已经更正了 ) 问题,页面工作正常,但值未被过滤,另外根据@CBroe 的评论,我正在使用 php7所以我用 strpos 替换了 str_contains 但它仍然没有给出预期的结果。

新代码:

function scan_files(){
    $upload_dir = wp_upload_dir();
    $folder = $upload_dir['basedir'];
    $files = list_files( $folder );
    
   foreach($files as $value){
    if(pathinfo($value, PATHINFO_EXTENSION)=='jpeg'||pathinfo($value, PATHINFO_EXTENSION)=='jpg'||pathinfo($value, PATHINFO_EXTENSION)=='png' && strpos($value,'100x100')!==false){

        $filtered_files[] = $value;
            }
    
        }
        echo "<pre>";
        print_r($filtered_files);
    }

更改此行:

if(pathinfo($value, PATHINFO_EXTENSION)=='jpeg'||pathinfo($value, PATHINFO_EXTENSION)=='jpg'||pathinfo($value, PATHINFO_EXTENSION)=='png' && strpos($value,'100x100')!==false){

收件人:

if((pathinfo($value, PATHINFO_EXTENSION)=='jpeg'||pathinfo($value, PATHINFO_EXTENSION)=='jpg'||pathinfo($value, PATHINFO_EXTENSION)=='png') && strpos($value,'100x100')!==false){

请注意路径信息语句周围的额外括号。您想要检查是否有任何扩展名是真实的并且路径包含您的键值。如果扩展名是 png,您的原始代码将只过滤文件名。