2016-12-25 70 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

沒關係,現在它更可用。 –