[英]Why can not use preg_match php with fsockopen response data?
[英]Why strpos PHP not work with fsockopen response?
为什么strpos PHP
不适用于 fsockopen 响应?
加载此代码时。 此代码将请求sdgsgsdgsfsdfsd.ca
到whois.cira.ca
服务器并查找文本Domain status: available
strpos PHP
如果找到它将会回显
{"domain":"sdgsgsdgsfsdfsdca","availability":"available"}
但如果没有找到文本。 这将是回声
{"domain":"sdgsgsdgsfsdfsdca","availability":"TAKEN"}
在这种情况下found text
但仍然回显
{"domain":"sdgsgsdgsfsdfsdca","availability":"TAKEN"}
我该怎么办?
<?php
$server = "whois.cira.ca";
$response = "Domain status: available";
showDomainResult(sdgsgsdgsfsdfsd.ca,$server,$response);
function checkDomain($domain_check,$server,$findText)
{
$con = fsockopen($server, 43);
if (!$con) return false;
fputs($con, $domain_check."\r\n");
$response = ' :';
while(!feof($con))
{
$response .= fgets($con,128);
}
echo $response."<BR><BR><BR><BR><BR>";
fclose($con);
if (strpos($response, $findText))
{
return true;
}
else
{
return false;
}
}
function showDomainResult($domain_check,$server,$findText)
{
if (checkDomain($domain_check,$server,$findText))
{
class Emp
{
public $domain = "";
public $availability = "";
}
$e = new Emp();
$e->domain = $domain_check;
$e->availability = "available";
echo json_encode($e);
}
else
{
class Emp
{
public $domain = "";
public $availability = "";
}
$e = new Emp();
$e->domain = $domain_check;
$e->availability = "TAKEN";
echo json_encode($e);
}
}
?>
您使用的 strpos 错误,如果字符串 START 包含您要搜索的内容,它将返回 int(0),根据 PHP 的定义,这是“有点假”。 明确检查false
,像这样
return false!==strpos($response, $findText);
并确保您使用的是!==
不是!=
根据经验,如果可以避免,请不要在 PHP 中使用松散比较运算符,否则可能会出现爆笑错误: https : //3v4l.org/tT4l8
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.