2013-09-06 4 views
0

기본적으로 내가 겪고있는 문제는 www.stackoverflow.com과 같은 URL을 가져 와서 "com"을 반환 할 수있는이 함수를 작성해야한다는 것입니다. 그러나 URL에 "www.stackoverflow.com"과 같이 끝에 마침표가있는 경우에도 동일한 값을 반환 할 수 있어야합니다. 이것은 내가 지금까지 가지고있는 것입니다. if 문은 기간 이전에 배열의 포인트를 반환하려는 시도이지만 if 문을 올바르게 사용하고 있다고 생각하지 않습니다. 그렇지 않으면 나머지 코드가 정확히 수행해야하는 작업을 수행합니다.마침표가있는 최상위 도메인 반환 PHP

<?php 
function getTLD($domain) 
{ 

$domainArray = explode("." , $domain); 
$topDomain = end($domainArray); 
    if ($topDomain == " ") 
    $changedDomain = prev(end($domainArray)); 
    return $changedDomain; 

return $topDomain; 

} 이런 일에 대한 ?>

답변

0

end 기능 (공백없이) 빈 문자열 ""을 반환 . $topDomain을 단일 공백 ​​문자와 비교하므로 if이 true로 평가되지 않습니다.

또한 prev 함수는 배열 입력이 필요하고 은 문자열을 반환하므로 $changedDomain = prev(end($domainArray))E_WARNING을 던져야합니다. end 이후

은 이미 $topDomain = end($domainArray) 전화했을 때, 당신은 if 블록 내부에 $domainArrayend를 호출 할 필요는 없습니다 업데이트되는 배열 $domainArray의 내부 포인터를 업데이트합니다.

시도 : 여기

if ($topDomain == "") { 
    $changedDomain = prev($domainArray); 
    return $changedDomain; // Will output com 
} 

는 그것을위한 phpfiddle입니다.

1

그런 간단한 경우에는 정규식을 사용하지 마십시오. 비용이 많이 들고 읽을 수 없습니다. 마지막 점이있는 경우 제거하십시오.

function getTLD($domain) { 
    $domain = rtrim($domain, '.'); 
    return end(explode('.', $domain)); 
}