I have a directory which contains .txt
files.
In each .txt
files are lines, under each other. the 2nd line is the category line.
A txt file looks like this:
id-12345678 // id line
sport // category line
A couple of categorynames should be excluded form the other categories, like Offside and 2019 I have filtered the array like below:
$blogfiles = glob("data/articles/*.txt"); // array with ALL blogfiles
$all_categories = array();
foreach($blogfiles as $blogfile) { // Loop through the blogfiles in the directory
$lines = file($blogfile, FILE_IGNORE_NEW_LINES); // all lines of the txt file into an array
$all_categories[] = $lines[1]; // category line (2nd line in txt file)
$excl_categories = array('Offside','2019'); // contains elements that should be excluded
$filtered_categories = array_diff($all_categories,$excl_categories); //new filtered array of categories
What i need is an array of blogfiles
in which the categories have been filtered in. I do not know how i can bind the corresponding blogfiles to the filtered array
Use in_array()
to test each category, rather than using array_diff()
on the whole array.
$excl_categories = array('Offside','2019'); // contains elements that should be excluded
$filtered_files = [];
$filtered_categories = [];
foreach($blogfiles as $blogfile) { // Loop through the blogfiles in the directory
$lines = file($blogfile, FILE_IGNORE_NEW_LINES); // all lines of the txt file into an array
$category = $lines[1]; // category line (2nd line in txt file)
if (!in_array($category, $excl_categories)) {
$filtered_categories[] = $category;
$filtered_files[] = $blogfile;
}
}