あるインタビューで、2 つの文字列がある場合、これら 2 つの文字列から一致する文字列の一部を取得するにはどうすればよいかという質問を受けました。例えば
$str1 = "My name is baig";
$str2 = "Baig is a nice person";
今、出力 「iaes g」と他の一致する文字が必要です
これをPHPで欲しい
前もって感謝します
これは、2 つの文字列 str1 と str2 の期待される結果を取得するコードです。
<?php
$str1 = strtolower("My name is baig");
$str2 = strtolower("Baig is a nice person");
$array1 = explode(' ',$str1);
$array2 = explode(' ',$str2);
$result = array_intersect($array2, $array1);
print_r(implode(' ',$result));
?>
別のフォーラムから次の回答を得ました
<?php
$str1 = "My name is baig";
$str2 = "Baig is a nice person";
$r1 = str_split(preg_replace("/[^a-zA-z]/","",strtolower($str1)));
$r2 = str_split(preg_replace("/[^a-zA-z]/","",strtolower($str2)));
$match = array_unique(array_intersect($r1,$r2));
$match = implode(" ",$match);
echo "Matched letters are: ".$match;
?>
大文字と小文字の区別はまだ問題ですが、私はそれを通過します
array_intersect
文字列に対して関数を使用した後に使用できexplode
ます。
実際の例:
http://codepad.org/IikNr2Vv
ただし、これは大文字と小文字Baig
が区別され、baig
.
これを解決するには、strtolower
関数を使用してすべての文字列を小文字に変換します。
いくつかのオプションがあります...特定の順序で一致が必要な場合、つまり別の文字列内の文字列を意味する場合は、strstr を使用できます。2 つの文字列間の共通点を見つけたい場合は、最初にパターンを爆発させます。あなたの場合はスペースです。
両方の文字列を公開し、両方の配列を交差させます。