我搜索了这个问题我无法找到确切的解决方案......
我有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行.. 但没有结果:( 请帮帮我......
答案 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_split和array_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
这允许您以数组或字符串形式返回。