$str1 = "h*llo";
$str2 = "hello";
是可以快速地對它們進行比較,而不必首先從STR1刪除*,並匹配從STR2索引字符?
該解決方案將需要不管多少*在字符串中的工作,如:
$str1 = "h*l*o";
$str2 = "hello";
感謝您抽空看看。
$str1 = "h*llo";
$str2 = "hello";
是可以快速地對它們進行比較,而不必首先從STR1刪除*,並匹配從STR2索引字符?
該解決方案將需要不管多少*在字符串中的工作,如:
$str1 = "h*l*o";
$str2 = "hello";
感謝您抽空看看。
是的,用正則表達式,更具體地說是PHP的preg_match。你在找什麼是「通配符」。
這是未經測試,但應該爲你工作:
$str1 = "h*llo";
$str2 = "hello";
//periods are a wildcards in regex
if(preg_match("/" . preg_quote(str_replace("*", ".*", $str1), "/") . "/", $str2)){
echo "Match!";
} else {
echo "No match";
}
編輯:這應該適用於你的情況:
$str1 = "M<ter";
$str2 = "Moter";
//periods are a wildcards in regex
if(preg_match("/" . str_replace("\<", ".*", preg_quote($str1, "/")) . "/", $str2)){
echo "Match!";
} else {
echo "No match";
}
您可以使用similar_text()
比較兩個字符串並接受,如果結果是以上例如80%。
similar_text($str1, $str2, $percent);
例子:
$str1 = 'AAA';
$str1 = '99999';
similar_text($str1, $str2, $percent);
echo $percent; // e.g. 0.000
$str1 = "h*llo";
$str2 = "hello";
similar_text($str1, $str2, $percent);
echo $percent; // e.g. 95.000
詳見這裏PHP SIMILAR TEXT
出於好奇,爲什麼80%? –
它只是爲了這個例子,我已經糾正它,謝謝 – CIRCLE
我喜歡這個答案,它可以用於大多數事情,但它不像使用實際通配符,如fnmatch()或正則表達式的方法那樣準確。 –
您正在尋找['的fnmatch()'](http://php.net/fnmatch)。 – mario
可能重複[php字符串匹配與通配符\ *?](http://stackoverflow.com/questions/6163055/php-string-matching-with-wildcard) – mario
@mario不知道那個功能!可能是比使用正則表達式更完整/更快/更好的整體方法。 –