Я хотел бы создать цикл в моем коде фильтра - PullRequest
0 голосов
/ 28 октября 2019

У меня есть текстовый файл, и в этом текстовом файле находятся домены. Я хочу удалить все домены, которые не имеют расширения .com .nl и .be. Так что в основном домены с .org, .de и т. Д. Должны идти. Все расширения домена сохраняются в переменной $ key. Можно ли создать один цикл вместо копирования, вставки кода и изменения переменной?

Это работает, потому что это одна переменная:

<?php
$key0 = ".org";

    $fc=file("linklijst.txt");
    $f=fopen("linklijst.txt","w");

    foreach($fc as $line)
    {
        if (!strstr($line,$key0))
            fputs($f,$line);
    }
    fclose($f);
?>

Но это не так:

<?php
$keys = array(".org",".de",".fr",".pl",".es",".uk",".jp",".ro",".forum",".us",".in",".it",".co",".ie",".ru",".dk",".tk",".pro",".ml",".gg",".cf",".hu",".kz",".ooo",".ca",".kr",".win",".cz",".ga","se");

$fc=file("linklijst.txt");
$f=fopen("linklijst.txt","w");

foreach($fc as $line)
{
    if (!strstr($line,$keys))
        fputs($f,$line);
}
fclose($f);?>

1 Ответ

0 голосов
/ 28 октября 2019

Предполагая, что ваш файл: domains.txt выглядит следующим образом:

example.com
example.net
example.nl
example.de
example.org
example.be

Вы хотите сохранить только те файлы с .com, .be и .nl ​​

$preserve = ['.com', '.nl', '.be'];
$accepted = []; //will contain the lines we want to preserve.
$lines = file("domains.txt");

foreach($lines as $line) {
    $suffix = substr($line, strrpos($line, ".")); //get the domain suffix
    if (in_array($suffix, $preserve)) {
        $accepted[] = $line;
    }
}

print_r($accepted);

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

...