为了账号安全,请及时绑定邮箱和手机立即绑定

如何在php中从包含特定单词的数组中去除文件

如何在php中从包含特定单词的数组中去除文件

PHP
萧十郎 2022-09-30 16:24:13
我在文件夹中有一些.txt文件。每个文件有 6 行。我的文件看起来像这样:messagesid_20197456 // identityFriends //categoryTest // title10 Feb 2020 22:28 // dateJohn // writerLorum ipsum.... // message类别的名称始终在第二行我总共有5个文件:4个类别,1个类别。现在我想去掉具有类别的文件FriendsOffsideOffside这就是我到目前为止所拥有的,以捕获带有类别的文件:Offside$filterthis = strtolower('Offside');$newslist = array();$files = glob("messages/*.txt"); // Specify the file directory by extension (.txt)foreach($files as $file) { // Loop through the files in the directory       $handle = @fopen($file, "r");    if ($handle) {        $lines = file($file); //file into an array        $buffer = $lines[1]; // grab category line        if(strpos(strtolower($buffer), $filterthis) !== FALSE) { // strtolower; search word not case sensitive                  $newslist[] = $file; // The filename of the match                // below the file which has Offside category                print_r($newslist); // outputs: Array ( [0] => messages/id_20200210222825.txt )                         }        fclose($handle);    }}为了输出所有文件,我使用一个foreach循环:foreach($newslist as $file) {    $lines = file($file, FILE_IGNORE_NEW_LINES); // filedata into an array    $file_id = $lines[0]; // file id    $news_category = $lines[1]; //  news category    $news_title = $lines[2]; //  news title    $news_date = $lines[3]; // news date    $news_author = $lines[4]; //  author name    $news_message = $lines[5]; // news message    fclose($fh);    // all the echos's come here...}我的问题:如何过滤在前程中没有类别的文件?所以前期应该输出所有的文件,除了那些有类别的文件?OffsideOffside
查看完整描述

1 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

array_diff将完成这项工作

抓取文件夹中的所有文件:messages

// read all files in messages folder

$dir = 'messages/';

if ($dh = opendir($dir)) {

    while(($file = readdir($dh))!== false){

        if ($file != "." && $file != "..") { // This line strips out . & ..

            $newslist[] = $dir.$file;                       

        }       

    }

}

closedir($dh);

现在过滤哪个类别中的文件越位(你已经这样做了)


// Strip file(s) with category Offside  

$strip_cat = strtolower('Offside');

$offside_array = array();


$files = glob("messages/*.txt"); // Specify the file directory by extension (.txt)


foreach($files as $file) { // Loop through the files in the directory   


    $handle = @fopen($file, "r");


    if ($handle) {


        $lines = file($file); //file into an array


        $buffer = $lines[1]; // grab category line


        if(strpos(strtolower($buffer), $strip_cat) !== FALSE) { // strtolower; search word not case sensitive   


                $offside_array[] = $file; // The filename of the match(es)


        }

        fclose($handle);

    }

}

现在比较 2 个数组:


// compare the arrays and strip out the files which contain cat Offside

$filtered_newslist = array_diff($newslist, $offside_array);

$filtered_newslist 是您的新数组,其中包含除具有类别的文件之外的所有文件Offside


您的前循环:


foreach($filtered_newslist as $file) {

    $lines = file($file, FILE_IGNORE_NEW_LINES); // filedata into an array


    $file_id = $lines[0]; // file id

    // and so on...

}


查看完整回答
反对 回复 2022-09-30
  • 1 回答
  • 0 关注
  • 79 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信