2016-07-03 1 views
0

strpos PHP이 fsockopen 응답과 작동하지 않습니까?strpos PHP가 fsockopen 응답과 함께 작동하지 않는 이유는 무엇입니까?

이 코드를로드 할 때. 텍스트를 찾을 수없는 경우 그것의

{"domain":"sdgsgsdgsfsdfsdca","availability":"available"} 

에코 될 것이지만 찾을 경우이 코드는 strpos PHP로 요청을 sdgsgsdgsfsdfsd.ca 텍스트 Domain status: available 서버 whois.cira.ca에 찾아가 될 것이다. 그것은이 경우 found text에서

{"domain":"sdgsgsdgsfsdfsdca","availability":"TAKEN"} 

에코 여전히
{"domain":"sdgsgsdgsfsdfsdca","availability":"TAKEN"} 

내가 어떻게 할 수있는

에코됩니다거야? 문자열은 당신이 검색하는 것과 함께 시작하면 잘못 strpos을 사용하고

<?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); 
    } 
} 
?> 

답변

0

은, 그것은 PHP의 정의에 의해 "좀 거짓"입니다 INT (0)을 반환합니다. 명시 적으로

return false!==strpos($response, $findText);

처럼, false 확인하고 당신이하지 !=

과 엄지 손가락의 규칙으로 !==을 사용하고 있는지 확인, 결코 당신이 그것을 피할 수 있다면 PHP 느슨한 비교 연산자를 사용하여, 재미있는 버그가 발생할 수 있습니다 : https://3v4l.org/tT4l8

관련 문제