Php I';我想在我的过滤代码中创建一个循环
我有一个文本文件,在这个文本文件中有域。我想删除所有没有.com.nl和.be扩展名的域。因此,基本上,带有.org、.de等的域必须被删除。所有域扩展都保存在$key变量中。是否可以创建一个循环,而不是复制粘贴代码和更改变量 这是因为它是一个变量: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) {
<?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
(您说要删除)。这确实是个错误,更改了它@我不是来讨论的。我来这里是为了得到答案。因为我真的不能让它工作@谢谢你的帮助。我可以通过以下信息找到解决方案:)