4
$arr1 = array ("llo" "world", "ef", "gh" );

$str1からの文字列で終わるかどうかを確認する最良の方法は何$arr1ですか? $arr1 要素の数を答え (真の場合) として知ることは素晴らしいことですが、真/偽の答えは素晴らしいものです。

例:

$pos= check_end("world hello");//$pos=0; because ends with llo
$pos= check_end("hello world");//$pos=1; because ends with world.

$arr1for ステートメントで のすべての要素を の終わりと比較するよりも優れた/高速/特別な方法はあり$str1ますか?

4

2 に答える 2

4

頭のてっぺんから……

function check_end($str, $ends)
{
   foreach ($ends as $try) {
     if (substr($str, -1*strlen($try))===$try) return $try;
   }
   return false;
}
于 2012-04-24T11:18:51.677 に答える
3

PHPのstartsWith() および endWith() 関数を参照してください。endsWith

使用法

$array = array ("llo",  "world", "ef", "gh" );
$check = array("world hello","hello world");

echo "<pre>" ;

foreach ($check as $str)
{
    foreach($array as $key => $value)
    {
        if(endsWith($str,$value))
        {
            echo $str , " pos = " , $key , PHP_EOL;
        }
    }

}


function endsWith($haystack, $needle)
{
    $length = strlen($needle);
    if ($length == 0) {
        return true;
    }

    $start  = $length * -1; //negative
    return (substr($haystack, $start) === $needle);
}

出力

world hello = 0
hello world = 1
于 2012-04-24T11:40:05.263 に答える