如何通过比较2个字符串获得匹配的字符串?

时间:2012-06-19 07:24:50

标签: php string

我曾在一次采访中被问到一个问题,如果我们有2个字符串,我们如何才能从这两个字符串中找到匹配字符串的一部分? 例如

$str1 = "My name is baig";
$str2 = "Baig is a nice person";

现在我想要输出 "我是" 和其他匹配的字母

我想在Php

中这样做

提前致谢

4 个答案:

答案 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; 
?>

区分大小写仍然是一个问题,但我将通过它

相关问题