あなたが持っている場合
$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()
2 つの文字列を比較し、結果が 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