我有以下代码:
require("class.XMLHttpRequest.php");
function hot($news){
$url="https://localhost/search.aspx?search=".$news."";
$ajax=new XMLHttpRequest();
$ajax->setRequestHeader("Cookie","Cookie: host");
$ajax->open("GET",$url,true);
$ajax->send(null);
if($ajax->status==200){
$rHeader=$ajax->getResponseHeader("Set-Cookie");
if(substr_count($rHeader, "Present!")>0) { return true; }
}else{ return false; }
}
$content1= hot("britney") ? "britney found" : "";
$content2= hot("gaga") ? "gaga found" : "";
$content3= hot("carol") ? "carol found" : "";
$filename = 'result.txt';
$handle = fopen($filename, 'a');
fwrite($handle, "$Content1\r\n");
fwrite($handle, "$Content2\r\n");
fwrite($handle, "$Content3\r\n");
fwrite($handle, "$Content4\r\n");
fclose($handle);
我想缩短脚本因为我有很多$ ContentN变量 也许就像foreach?
答案 0 :(得分:3)
我会这样做:
$celebrities = array('britney','gaga','carol');
$filename = 'result.txt';
$handle = fopen($filename, 'a');
foreach($celebrities as $celebrity)
{
if(hot($celebrity)) { fwrite($handle, "{$celebrity}\r\n"); }
}
fclose($handle);
如果您需要更多名人,只需将它们添加到阵列即可。
答案 1 :(得分:2)
这样的东西会非常接近你的实际代码,但可能不会被重新编写
for($i = 1 ; $i <= 4 ; $i++)
fwrite($handle, "${Content$i}\r\n");
使用变量变量:http://php.net/manual/en/language.variables.variable.php
这里不是最好的解决方案:为什么不简单地使用数组呢?
$content[1]= hot("britney") ? "britney found" : "";
$content[2]= hot("gaga") ? "gaga found" : "";
$content[3]= hot("carol") ? "carol found" : "";
for($i = 1 ; $i <= 4 ; $i++)
fwrite($handle, $Content[$i]."\r\n");
或者更好的是,使用 captaintokyo 的解决方案,因为您可能不希望文本文件中出现空行。
答案 2 :(得分:0)
这是一个简短的代码重构代码。更新了变量名称,数组中保存的趋势主题以及您询问的foreach。代码未经测试。
require("class.XMLHttpRequest.php");
$result_filename = 'result.txt';
$hot_topics = array(
'britney',
'gaga',
'carol'
);
$handle = @fopen($result_filename, 'a+');
if (!$handle) {
exit("Unable to open $result_filename");
}
foreach($hot_topics as $topic) {
if (is_hot($topic)) {
fwrite($handle, "$topic found\r\n");
}
}
fclose($handle);
exit("\ncomplete");
function is_hot($news) {
$url = "https://localhost/search.aspx?search=".$news;
$ajax = new XMLHttpRequest();
$ajax->setRequestHeader("Cookie", "Cookie: host");
$ajax->open("GET", $url, true);
$ajax->send(null);
if ($ajax->status == 200) {
$rHeader = $ajax->getResponseHeader("Set-Cookie");
if (substr_count($rHeader, "Present!") > 0) {
return true;
}
}
return false;
}