2016-12-25 71 views
-1

我想比较字符串并显示在两个字符串匹配的字符在PHP我试过一切,但未能做到这一点,请给我任何想法如何做到这一点在PHP 比如我有两个变量我想比较字符串,并显示在两个字符串中匹配的字符在php

我要比较$ a和$ b,并给予输出字母whicj两个

$a="hello "; 
$b= "hell"; 

输出是常见的应该是:::地狱作为前4个字符匹配,所以它应该显示地狱,请帮助我做到这一点

我已经尝试了几乎所有我知道或可以在网上找到的东西 我试过..我把字符串吐到数组中...使用嵌套for循环找到不匹配的字母...我写的代码多于35行..但没有结果:(请帮助我......

+2

欢迎StackOverflow上。您至少应该提供您正在使用的不同方法的示例。 – yivi

+0

请让你的问题清楚,是word和卓尔有相同的'w','o','r','d'。 –

+1

这是这个问题的(确切)副本:http://stackoverflow.com/questions/20921590/match-two-strings-and-compare-each-letter-in-php?rq=1 – Jeff

回答

0

这个PHP代码是你需要的。

<?php 


$a = "hello"; 
$b = "hell"; 

$str = ""; 

for ($i=0; $i < strlen($a); $i++) { 
    for ($j=0; $j < strlen($b); $j++) { 
     if ($a[$i]==$b[$j]) { 
      $str.=$a[$i]; 
      break; 
     } 
    } 
} 
echo $str; 

?> 

PHP字符串可以被看作是字符数组因此$ A [0]让你的字符串的第一个字符。

+0

除了这段代码是否能完成这项工作之外,你犯了一个经常犯的错误。不要使用函数来确定'for'命令中的stringlength(用任何语言)。长度不会改变,但你一遍又一遍地计算它。在'for'命令之前将该值放入一个变量中。 – RST

+0

是的,没错。这是更好的计算之前的长度。 –

1

在你的情况,这将是足够使用array_intersectstr_split功能得到共性两个输入字符串(当然,如果字符的顺序并不重要):

$a = "hello "; 
$b = "hell"; 
$common = array_intersect(str_split(trim($a)), str_split(trim($b))); 

print_r($common); 

的输出:

Array 
(
    [0] => h 
    [1] => e 
    [2] => l 
    [3] => l 
) 

http://php.net/manual/en/function.array-intersect.php

+0

array_intersect()很好。请添加参考链接,以便读者深入查看。 –

+0

@VasimVanzara,增加了参考链接 – RomanPerekhrest

+0

没关系,现在它更可用。 –