0

あなたが持っている場合

$str1 = "h*llo";
$str2 = "hello";

最初に str1 から * を削除し、一致するインデックス付き文字を str2 から削除することなく、それらをすばやく比較することは可能ですか?

ソリューションは、文字列内の * の数に関係なく機能する必要があります。たとえば、次のようになります。

$str1 = "h*l*o";
$str2 = "hello";

ご覧いただきありがとうございます。

4

2 に答える 2

3

はい、正規表現を使用します。より具体的には、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";
}
于 2013-10-15T03:17:12.397 に答える
1

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

于 2013-10-15T03:25:36.660 に答える