0

基本的に私が抱えている問題は、www.stackoverflow.com のような URL を取得して「com」を返すことができるこの関数を作成する必要があることです。ただし、「www.stackoverflow.com」のように URL の末尾にピリオドがあっても、同じ値を返せるようにする必要があります。これは私がこれまでに持っているものです。if ステートメントは、ピリオドの前に配列内のポイントを返そうとする私の試みですが、if ステートメントを正しく使用しているとは思いません。それ以外の場合、コードの残りの部分は、本来行うべきことを正確に行います。

<?php
    function getTLD($domain)
    {

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

    return $topDomain;


    }
?>
4

3 に答える 3

0

The end function is returning an empty string "" (without any spaces). You are comparing $topDomain to single space character so the if is not evaluating to true.

Also prev function requires array input and end($domainArray) is returning a string, so, $changedDomain = prev(end($domainArray)) should throw an E_WARNING.

Since end updates the internal pointer of the array $domainArray, which is already updated when you called $topDomain = end($domainArray), you do not need to call end on $domainArray inside the if block.

Try:

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

Here is the phpfiddle for it.

于 2013-09-06T17:37:13.723 に答える
0

このようなものには正規表現を使用してください。これを試して:

function getTLD($domain) {
    return preg_replace("/.*\.([a-z]+)\.?$/i", "$1", $domain );
}

実際の例: http://codepad.org/km0vCkLz

正規表現とその使用方法について詳しくは、http: //www.regular-expressions.info/をご覧ください。

于 2013-09-06T17:28:04.397 に答える