如果你能得到所有的字符串作爲一個數組和循環他們在一個foreach()
這樣的:
$string_array = array('string', 'string1', 'string2', 'does-not-match');
$needle = 'string';
$results = array();
foreach($string_array as $key => $val):
if (fnmatch($needle, $val):
$results[] = $val;
endif;
endforeach;
你應該結束其匹配$needle
這些條目結束。作爲替代你可以使用preg_match()
和模式/string/i
$string_array = array('string', 'string1', 'string2', 'does-not-match');
$needle = '/string/i';
$results = array();
foreach($string_array as $key => $val):
if (!empty(preg_match($needle, $val)):
$results[] = $val;
endif;
endforeach;
注有使用空時(可能是問題),並通過)的preg_match的結果(:
此前PHP 5.5 ,empty()只支持變量;其他任何東西都會導致解析錯誤。換句話說,以下內容不起作用:空(trim($ name))。相反,使用trim($ name)== false。
沒有錯誤應與PHP版本5.3.x < 5.4
不應該把「最相似的」改爲「弗蘭克的每週交易報告」和「交易報告123」? – MightyPork
粗略的方法是使用'levenshtein()'來確定兩個字符串之間的距離。 – Nadh