English 中文(简体)
php:从阵列中抽取一个元素以检查其位置是否结束的最佳途径?
原标题:php: the best way to check if string ends with an element from array?
  • 时间:2012-04-24 11:09:11
  •  标签:
  • php
  • string
$arr1 = array ("llo" "world", "ef", "gh" );

What s the best way to check if $str1 ends with some string from $arr1? The answer true/false is great, although knowing the number of $arr1 element as an answer (if true) would be great.

例:

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

是否比对<条码>所有内容进行对比更好/具体/专门的方法?

最佳回答

页: 1

function check_end($str, $ends)
{
   foreach ($ends as $try) {
     if (substr($str, -1*strlen($try))===$try) return $try;
   }
   return false;
}
问题回答

Pretty sure this will work. Define your own "any" function, which takes an array and returns true if any of its values evaluate to true, and then use php s array_map function to do the equivalent of list-comprehension to construct an array to pass to it. This could instead be combined into one function, but you ll probably find the "any" function useful elsewhere in its own right anyway.

if (!function_exists( any )) {
    function any(array $array):bool {
        return boolval(array_filter($array));
    }
}

function check_end (string $needle, array $haystack):bool {
    return any(
        array_map(
            function (string $end) use ($needle):bool {
                return str_ends_with($needle, $end);
            },
            $haystack,
        )
    );
}




相关问题
Simple JAVA: Password Verifier problem

I have a simple problem that says: A password for xyz corporation is supposed to be 6 characters long and made up of a combination of letters and digits. Write a program fragment to read in a string ...

Case insensitive comparison of strings in shell script

The == operator is used to compare two strings in shell script. However, I want to compare two strings ignoring case, how can it be done? Is there any standard command for this?

Trying to split by two delimiters and it doesn t work - C

I wrote below code to readin line by line from stdin ex. city=Boston;city=New York;city=Chicago and then split each line by ; delimiter and print each record. Then in yet another loop I try to ...

String initialization with pair of iterators

I m trying to initialize string with iterators and something like this works: ifstream fin("tmp.txt"); istream_iterator<char> in_i(fin), eos; //here eos is 1 over the end string s(in_i, ...

break a string in parts

I have a string "pc1|pc2|pc3|" I want to get each word on different line like: pc1 pc2 pc3 I need to do this in C#... any suggestions??

Quick padding of a string in Delphi

I was trying to speed up a certain routine in an application, and my profiler, AQTime, identified one method in particular as a bottleneck. The method has been with us for years, and is part of a "...

热门标签