为什么我不能对上传的文件执行正确的strpos
功能(我首先上传文件,然后执行$site = stream_get_line($f, 4096, "\n")
)并且在将相同的内容读入$时它完全正常来自服务器上手动创建的文件的站点。
我不知道造成它的原因......在两种情况下似乎都很好地读取了这条线,但strpos
在通过用户上传时与我手动创建时不一样。< / p>
以下是代码:
<?php
if(!$_FILES){
?>
<head>
<title>Bulk Index Checker</title>
</head>
<center>
<form method="post" enctype="multipart/form-data">
<input type="file" name="file" size="50" />
<br/>
<input type="submit" value="Check 'em!" />
</form>
</center>
<?php
}
else{
echo("<center> <h1>Checking... please wait.</h1> <br><table border=1> <tr><td>Site</td><td>Indexed</td></tr>");
$target_path = "checkupload/";
$target_path = $target_path . basename($_FILES['file']['name']);
move_uploaded_file($_FILES['file']['tmp_name'], $target_path);
$f = fopen($target_path, "r") or exit("Unable to open file!");
while (!feof($f))
{
$site = stream_get_line($f, 4096, "\n");
$url = 'http://www.google.com/search?q=info:' . $site;
//sleep(3);
$contents = file_get_contents($url);
if (strpos($contents,'<h3 class="r"><a href="/url?q='.$site)!=FALSE) {
echo("<tr bgcolor=\"Silver\"><td><a href=\"".$url."\" target=\"_blank\">".$site."</a></td><td>YES</td></tr>");
echo("<br>");
}
else{
echo("<tr><td><a href=\"".$url."\" target=\"_blank\">".$site."</a></td><td>NO</td></tr>");
}
}
?>
</table>
<br/>
<form>
</center>
<?php
}
?>
编辑:这是我尝试的另一种方式(使用textarea) - 基本上是相同的 - 它只在你输入1个URL时才能正常工作。一旦你输入下面的另一个URL,当它真的为TRUE时,它会显示第一个的FALSE。
为什么会发生这种情况?
<?php
if(!$_POST){
?>
<head>
<title>Bulk Index Checker</title>
</head>
<center>
<h1>Bulk Index Checker v1.0</h1>
<form method="post" enctype="multipart/form-data">
<textarea id="list" name="list" rows="10" cols="50"></textarea>
<br/>
<input type="submit" value="Check 'em!" />
</form>
</center>
<?php
}
else{
echo("<center> <h1>Checking... please wait.</h1> <br><table border=1> <tr><td>Site</td><td>Indexed</td></tr>");
$lines = explode("\n", $_POST['list']);
foreach($lines as $site) {
echo($site);
$url = 'http://www.google.com/search?q=info:' . $site;
sleep(3);
$contents = file_get_contents($url);
if (strpos($contents,'<h3 class="r"><a href="/url?q='.$site)!=FALSE) {
echo("<tr bgcolor=\"Silver\"><td><a href=\"".$url."\" target=\"_blank\">".$site."</a></td><td>YES</td></tr>");
echo("<br>");
}
else{
echo("<tr><td><a href=\"".$url."\" target=\"_blank\">".$site."</a></td><td>NO</td></tr>");
}
}
?>
</table>
<br/>
</center>
<?php
}
?>
答案 0 :(得分:0)
尝试使用&#39;!==&#39;而不是&#39;!=&#39;。
我没有选择在这个阶段进行测试。见http://php.net/manual/en/function.strpos.php(示例#2)