使用PHP解析外部HTML页面

时间:2011-06-10 18:14:15

标签: php html-parsing

我正在尝试使用来自http://www.hostip.info/use.html

的API的IP检测

因此,如果您在浏览器中输入以下内容: http://api.hostip.info/country.php?ip=12.24.25.26

然后页面会写“US”......

现在我的问题是如何在我的PHP代码中使用IF ELSE lopp?我想我必须解析那个HTML页面,但是目前我没有任何线索,一些帮助会受到关注!

感谢。

3 个答案:

答案 0 :(得分:4)

CURL应该做你需要做的事。

$url = "http://api.hostip.info/country.php?ip=[put_your_ip_here]";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$output = curl_exec($curl);
curl_close($curl);

if(preg_match('/^us$/i', $output)) {
  echo 'Is US';
} else {
  echo 'Something else';
}

答案 1 :(得分:4)

由于该页面不输出除国家/地区代码以外的任何内容,因此无需解析。对返回的HTML进行简单检查就可以了。

<?php
$ip = '12.24.25.26';
$country = file_get_contents('http://api.hostip.info/country.php?ip='.$my_ip); // Get the actual HTML

if($country === "US") {
    echo "It is US";
} else {
    echo "It is not US. It is " . $country;
}

答案 2 :(得分:3)

您可以使用以下内容。将$my_ip更改为您喜欢的IP。

<?php
$my_ip = '12.24.25.26';
$my_country = file_get_contents('http://api.hostip.info/country.php?ip='.$my_ip);

if(strstr($my_country,'US'))
{
    echo $my_country . ' found.';
}
elseif(strstr($my_country,'XX'))
{
    echo 'IP: ' . $my_ip . 'doesn\'t exists in database';
}