我想要在内容中检查一个网站,该网站上有一些单词或者没有?
演示: http://codepad.viper-7.com/CQh18s
我试过:
$url = "http://www.stackoverflow.com/":
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec($ch);
curl_close($ch);
$link = array(
"Top",
"Questions",
"Favorite",
"Tags",
"ago",
"vote",
"answers"
);
$resulet = "";
foreach ($link as $val) {
if (strstr($contents, $val)){
$resulet += '1';
}else{
$resulet += '0';
}
}
echo $resulet;
if ($resulet != 0) {
echo 'FALSE';
}else{
echo 'TRUE';
}
答案 0 :(得分:2)
在这种情况下,做一些初步调试很有帮助:
var_dump($contents);
确保您获得所期望的可搜索内容。var_dump($resulet);
以确保生成的变量符合您的预期。 如果没有进一步澄清,您似乎正在尝试在$resulet
中创建一个数字增量变量,但是使用字符串变量进行此操作。
您的代码的cURL部分看起来不错,所以我怀疑如果您这样做,您将收到您期望的结果:
$resulet = 0;
foreach ($link as $val) {
$resulet += strstr($contents, $val) ? 1 : 0;
}
var_dump($resulet);
如果没有,您可能需要将strstr
更改为stristr
,以使搜索不区分大小写。
答案 1 :(得分:0)
您的代码中的主要问题是您不会让curl遵循重定向。正如@rdlowrey所说,只是倾销$contents
var以意识到该页面有一个新的位置。
要让curl遵循重定向,只需在curl_exec
:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_MAXREDIRS, 5);
除此之外,为什么使用$resulet
作为计数器而不将其视为整数呢?
$resulet = 0;
...
$resulet += 1;