我曾经在一次采访中被问到一个问题,如果我们有 2 个字符串,我们如何从这两个字符串中获取匹配字符串的一部分?例如
$str1 = "My name is baig";
$str2 = "Baig is a nice person";
现在我想要输出 “iaes g”和其他匹配的字母
我想要这个在 PHP
提前致谢
这是获取两个字符串 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;
?>
区分大小写仍然是一个问题,但我会通过它
那么你有几个选择......如果你想要以特定顺序匹配,意思是另一个字符串中的一个字符串,你可能会去 strstr,如果你想找到两个字符串之间的任何共同点,你可能想先找到一个爆炸模式,在你的情况下是一个空间。
公开两个字符串并与两个数组相交。
您可以在字符串上array_intersect
使用该函数后使用。
一个工作示例:
http ://codepad.org/IikNr2Vv
但这是区分大小写的,会有所不同。
要解决此问题,您可以使用该函数将所有字符串转换为小写。explode
Baig
baig
strtolower