匹配两个字符串并比较php中的每个字母

时间:2014-01-04 13:25:00

标签: php

我搜索了这个问题我无法找到确切的解决方案......

我有2个变量......

$s1 = "ABC"; //or "BC"
$s2 = "BC"; //or "Bangalore"

我必须比较$s1$s2并将输出设为letters which is not present in $s2 eg : "A" // or"C"

像那样 我必须比较$s2$s1并将输出设为letters which is not present in $s1 eg : null // or"angalore"

我尝试了什么.. 我把字符串吐到阵列...... 使用嵌套for循环查找不匹配的字母... 我写的代码超过35行.. 但没有结果:( 请帮帮我......

5 个答案:

答案 0 :(得分:3)

echo str_ireplace(str_split($s2), "", $s1); // output: A

答案 1 :(得分:2)

您可以在此处使用array_diff()

function str_compare($str1, $str2)
{
    $str1chars = str_split($str1);
    $str2chars = str_split($str2);
    $diff = array_diff($str1chars, $str2chars)
    return implode($diff);
}

通过调用函数如下:

$diffchars = str_compare('ABC', 'BC');

您将收到一个字符串,其中包含两个字符串中都没有出现的字符。在此示例中,它将为A,因为该字符显示在$str1中,但不在$str2中。

答案 2 :(得分:2)

使用array_diff()

function str_diff($str1, $str2) {
    $arr1 = str_split($str1);
    $arr2 = str_split($str2);
    $diff = array_diff($arr1, $arr2);
    return implode($diff);
}

用法:

echo str_diff('BC', 'Bangalore'); // => C
echo str_diff('ABC', 'BC');       // => A

答案 3 :(得分:2)

您可以使用str_splitarray_diff,如:

<?php
$s1 = 'abcedf';
$s2 = 'xzcedf5460gf';

print_r(array_diff(str_split($s1), str_split($s2)));

答案 4 :(得分:2)

好的,这样做

$str1s = "abc";
$str2s = "BCd";


function findNot($str1, $str2, $asArray = false){

    $returnValue = array_diff(array_unique(str_split(strtolower($str1))), array_unique(str_split(strtolower($str2))));

    if($asArray == false){

        return implode($returnValue);

    }else{

        return $returnValue;

    }

}

echo findNot($str1s, $str2s); //gives a string
echo findNot($str1s, $str2s, true); //gives array of characters 

这允许您以数组或字符串形式返回。