Как с помощью PHP найти совпадения общих символов в двух строках одинаковой длины?

Например,

$s1 = "ashyjUTY#rj[jkIIO}[hh{FIL]Ojk89y]";
$s2 = "pshyjUTY#r7[jk8rO}[hh{DrL]OjkB7y]";
cMatch($s1, $s2);

Выход:

-shyjUTY#r-[jk--O}[hh{--L]Ojk--y]

Функция cMatch предсказывает совпадения общих символов, как указано выше.

КОД

<?php 
function cMatch($s1, $s2) 
{ 
 $p = $s1; 
 $r = $s2; 
 $m = str_split($p, 1); 
 $n = str_split($r, 1); 
 $a = count($m); 
 $b = count($n); 
 if ($a == $b) { 
   for ($i = 0; $i < $a; $i++) { 
      if ($m[$i] == $n[$i]) { 
        print $m[$i]; 
      } else {
        print "-"; 
      }
   } 
 } else { 
    print "Length of both strings are different!"; } 
 } 
 $x = "ashyjUTY#rj[jkIIO}[hh{FIL]Ojk89y]"; 
 $y = "pshyjUTY#r7[jk8rO}[hh{DrL]OjkB7y]";
 cMatch($x, $y); 
?>
1
ak-SE 18 Фев 2016 в 08:28

2 ответа

Лучший ответ

Обратите внимание на решение ниже: -

<?php
$s1="ashyjUTY#rj[jkIIO}[hh{FIL]Ojk89y]";
$s2="pshyjUTY#r7[jk8rO}[hh{DrL]OjkB7y]";
$already=""; // create an empty string
for($i=0;$i<strlen($s2);$i++) // start loop
{
   if ($s1[$i] == $s2[$i]) // done match of character at exact position in both string
   {
       $already .=$s2[$i]; // if match found then assign the character to the newly created variable
   }else{
       $already .='-'; // if not then add - to the variable
   }
}
echo $already; // print the variable and get the common characters along with - included too.
?>

Вывод: - https://eval.in/520701

Примечание: -

  1. Этот код будет соответствовать символам в одной позиции в обеих строках.

  2. Также я считаю, что вы можете очень легко превратить его в функцию. Спасибо.

2
Alive to Die 18 Фев 2016 в 07:35

Попробуйте, это может вам помочь.

<?php
$s1 = "ashyjUTY#rj[jkIIO}[hh{FIL]Ojk89y]";
$s2 = "pshyjUTY#r7[jk8rO}[hh{DrL]OjkB7y]";
$S1_arr = str_split($s1);
$S2_arr = str_split($s2);

$common = implode(array_unique(array_intersect($S1_arr, $S2_arr)));

echo "'$common'";
?>
1
PHPExpert 18 Фев 2016 в 05:39