php - 如何检查两个字符串是否包含相同的字母?

标签 php string match

$textone = "pate"; //$_GET
$texttwo = "tape";
$texttre = "tapp";

if ($textone ??? $texttwo) {
echo "The two strings contain the same letters";
}
if ($textone ??? $texttre) {
echo "The two strings NOT contain the same letters";
}

我在寻找什么 if 语句?

最佳答案

考虑到以下两个变量,我想一个解决方案可能是:

$textone = "pate";
$texttwo = "tape";


1.首先,拆分字符串,得到两个字母数组:

$arr1 = preg_split('//', $textone, -1, PREG_SPLIT_NO_EMPTY);
$arr2 = preg_split('//', $texttwo, -1, PREG_SPLIT_NO_EMPTY);

请注意,正如@Mike 在他的评论中指出的,而不是使用 preg_split()就像我第一次做的那样,对于这种情况,最好使用 str_split() :

$arr1 = str_split($textone);
$arr2 = str_split($texttwo);


2. 然后,对这些数组进行排序,使字母按字母顺序排列:

sort($arr1);
sort($arr2);


3. 之后,内爆数组,创建所有字母都按字母顺序排列的单词:

$text1Sorted = implode('', $arr1);
$text2Sorted = implode('', $arr2);


4. 最后,比较这两个:

if ($text1Sorted == $text2Sorted) {
    echo "$text1Sorted == $text2Sorted";
}
else {
    echo "$text1Sorted != $text2Sorted";
}



将这个想法转化为比较函数会得到以下代码部分:

function compare($textone, $texttwo) {
    $arr1 = str_split($textone);
    $arr2 = str_split($texttwo);

    sort($arr1);
    sort($arr2);

    $text1Sorted = implode('', $arr1);
    $text2Sorted = implode('', $arr2);

    if ($text1Sorted == $text2Sorted) {
        echo "$text1Sorted == $text2Sorted<br />";
    }
    else {
        echo "$text1Sorted != $text2Sorted<br />";
    }
}


并在你的两个上调用该函数:

compare("pate", "tape");
compare("pate", "tapp");

会得到以下结果:

aept == aept
aept != appt

关于php - 如何检查两个字符串是否包含相同的字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6807864/

相关文章:

php - PHP 中的 SFTP 连接(不是通过 ssh)

php - 这看起来像是允许用户公开共享数据的安全方式吗?

php - 强制 CodeIgniter 执行钩子(Hook)功能?

java - 从字符串数组中删除正则表达式

c# - 获取奇数长度字符串的中间三个字符

javascript - 从特定组中获取匹配项

javascript 匹配替换文本

php - 开发像 Stackoverflow 一样的聊天 API

python - 如果 foo 中不存在键,则忽略 str.format(**foo)

sql - 在数据库列中查找和匹配