我需要一个 PHP 函数来检查一个数组值是否在字符串的第一个字符中,但数组值包含不同数量的字符。
该函数还应该首先检查较长的数组值,因为它应该只找到最长的数组值。
例子:
$string = 'ausspielen'; // should give 'aus' as result
$string2 = 'auseinandernehmen'; // should give 'auseinandernehmen' as result
$string3 = 'einarbeiten'; // should give 'ein' as result
$string4 = 'einherfahren'; // should give 'einher' as result
$array = ['aus','auseinander','ein','einher'];
我可以mb_substr($string, 0, 3);
用来查找前三个字符,但是如何找到不同数量的字符呢?我还找到了函数strpos
,它可以找到字符串中子字符串第一次出现的位置,但是如何将其应用于我的问题?
我的目标是从字符串数组中找到正确的值。例如,字符串'auseinandernehmen'
应该找到数组值'auseinander'
而不是'aus'
。该函数应该检查字符串的第一个字符并将它们与数组的所有值进行比较,但是如果它找到更长的数组值,它应该使用它,而不是像'aus'
. 结果应该是函数找到的最长数组值。
我认为线索是传递 $array 按其元素长度从较长降序排序的:
function Match($aString){
$array = ['auseinander','einher','aus','ein'];
foreach($array as $elem){
if (substr($aString,0,strlen($elem))==$elem) // Beginning of $aString matches element of $array
return $elem;
}
return "";
}
echo Match('ausspielen') ."\n";
echo Match('auseinandernehmen') . "\n";
echo Match('einarbeiten') . "\n";
echo Match('einherfahren') . "\n";
输出如您所料:
aus
auseinander
ein
einher
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句