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