我正在尝试导出位于domains.txt文件中的所有域,这些域与all-urls.txt文件中的链接完全匹配。这是我的剧本:
<?php
if (isset($_POST['submit'])) {
$badwords = file('domains.txt', FILE_SKIP_EMPTY_LINES);
$domains = file('all-urls.txt', FILE_SKIP_EMPTY_LINES);
$newarr = array();
echo '<table>';
foreach($badwords as $k=>$v) {
foreach($domains as $k1=>$v1) {
if(strpos($v1,$v)!==false) {
array_push($newarr,$v1);
$links = array_shift($newarr);
echo '<tr><td>';
echo $links;
echo '</td></tr>';
}
}
}
echo '</table>';
}
?>
<body>
<form action="" name="submit">
<p><label>Ready to submit</label></p>
<p><input name="submit" type="submit" value ="Go"></p>
</form>
</body>
而不是$badwords = file('domains.txt', FILE_SKIP_EMPTY_LINES);
我有
$badwords = array('domain1.com', 'domain2.com');
而不是
$domains = file('all-urls.txt', FILE_SKIP_EMPTY_LINES);
我有
$domains = array('domain1.com/url/subfoler.html', 'domain1.com/url/subfoler.html','domain2.com/sublink/otherthings.php');
现在我正在尝试用文件替换数组,因为我更容易加载它们,因为我有大量的域名和网址。 问题是脚本没有以这种形式做任何事情。我错在哪里
答案 0 :(得分:0)
你怎么知道你实际上已经读过这个文件了?
$badwords = file('domains.txt', FILE_SKIP_EMPTY_LINES);
if ( $badwords === false )
die ("error on file " . 'domains.txt');
$domains = file('all-urls.txt', FILE_SKIP_EMPTY_LINES);
if ( $domains === false )
die ("error on file " . 'all-urls.txt');
...
另外,表达式
array_push($newarr,$v1);
$links = array_shift($newarr);
与
完全相同 $newarr = array();
$links = $v1;
并使用一些cpu周期完全没有效果......
答案 1 :(得分:0)
发布表单的默认方法是GET
,因此如果您没有指定方法,则会使用GET
,您将永远不会进入比较文件的部分为:
isset($_POST['submit'])
是false
您可以在表单中添加一个方法来解决:
<form action="" name="submit" method="post">
答案 2 :(得分:0)
找到我的答案:
<?php
$domains = file("domains.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$urls = file("all-urls.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$newarr = array();
$f = fopen("result.txt", w);
echo "<table>";
foreach($domains as $k=>$v) {
foreach($urls as $k1=>$v1) {
if(strpos($v1,$v)!==false) {
array_push($newarr,$v1);
$links = array_shift($newarr);
echo "<tr><td>";
echo $links;
echo "</td></tr>";
fwrite($f, "$links\r\n");
}
}
}
echo "</table>";
?>
我需要添加FILE_IGNORE_NEW_LINES
,因为网址是新行。