Php I';我想在我的过滤代码中创建一个循环

Php I';我想在我的过滤代码中创建一个循环,php,for-loop,text-files,Php,For Loop,Text Files,我有一个文本文件,在这个文本文件中有域。我想删除所有没有.com.nl和.be扩展名的域。因此,基本上,带有.org、.de等的域必须被删除。所有域扩展都保存在$key变量中。是否可以创建一个循环,而不是复制粘贴代码和更改变量 这是因为它是一个变量: <?php $key0 = ".org"; $fc=file("linklijst.txt"); $f=fopen("linklijst.txt","w"); foreach($fc as $line) {

我有一个文本文件,在这个文本文件中有域。我想删除所有没有.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);?>

假设您的文件: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);

这可能不是最健壮的代码,但我希望它说明了一种解决问题的体面方法

首先,如果你一开始不理解代码,那么复制和粘贴代码永远不是一个可靠的解决方案。首先开始学习PHP,然后问一个关于某个问题的特定问题。“但这不是”-当然不是,
strstrstr
想要一个值作为第二个参数,而不是数组。您必须使用第二个嵌套循环来循环每个域的所有键,或者首先从域中提取TLD部分(包括点),这样您就可以在数组中使用
。顺便说一句,您的示例数组与您在描述中所说的不匹配。它包含f.e.
.com
(您说要保留)和
.org
(您说要删除)。这确实是个错误,更改了它@我不是来讨论的。我来这里是为了得到答案。因为我真的不能让它工作@谢谢你的帮助。我可以通过以下信息找到解决方案:)