为了账号安全,请及时绑定邮箱和手机立即绑定

如何设置大写字符等于小写字符,PHP

如何设置大写字符等于小写字符,PHP

PHP
当年话下 2022-07-09 16:36:14
我为文本中的重复字符计数创建函数,我对大写和小写字符有问题,大写不计数,因为与小写不一样,我的问题是,我如何计算大写字符?    <?phpfunction fillCharCounts($str, $count) {     for ($i = 0; $i < strlen($str); $i++)         $count[ord($str[$i])]++;     for ($i = 0; $i < 256; $i++)         if($count[$i] > 1)             echo chr($i) . " " .                           ($count[$i]) . "\n"; } function printDups($str) {     $count = array();     for ($i = 0; $i < 256; $i++)     $count[$i] = 0;     fillCharCounts($str, $count); } $str = "Nama saya Adhi Dewandaru"; $str = preg_replace("/([^A-Za-z])/","",$str); printDups($str); 但输出总是显示 a 6 d 2预期输出为a 7d 3
查看完整描述

2 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

仅更新此功能


function fillCharCounts($str, $count) 

for ($i = 0; $i < strlen($str); $i++) 

    $count[ord(strtolower($str[$i]))]++; 


for ($i = 0; $i < 256; $i++) 

    if(($count[$i] > 1 && $i == '097' || $i == '100'))

        echo chr($i) . " " .  

                     ($count[$i]) . "\n"; 

  } 

输出将是


a 7 d 3


查看完整回答
反对 回复 2022-07-09
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

这更容易解决,方法是使用 将字符串转换为小写,使用strtolower将其拆分为单个字符str_split,然后使用 计算值array_count_values,最后使用 过滤掉非重复项array_filter:


$str = "Nama saya Adhi Dewandaru"; 

$dups = array_filter(array_count_values(str_split(strtolower($str))), function ($v) { return $v > 1; });

print_r($dups);

输出:


Array

(

    [n] => 2

    [a] => 7

    [ ] => 3

    [d] => 3

)

如果您不希望输出中包含特定字符,则可以进一步过滤此数组:


$dups = array_filter($dups, function ($v, $k) { return !in_array($k, array(' ', 'n')); }, ARRAY_FILTER_USE_BOTH);

print_r($dups);

输出:


Array

(

    [a] => 7

    [d] => 3

)

或将其与上一个过滤器结合使用:


$str = "Nama saya Adhi Dewandaru"; 

$dups = array_filter(array_count_values(str_split(strtolower($str))), function ($v, $k) { return $v > 1 && !in_array($k, array(' ', 'n')); }, ARRAY_FILTER_USE_BOTH);

print_r($dups);

输出:


Array

(

    [a] => 7

    [d] => 3

)


查看完整回答
反对 回复 2022-07-09
  • 2 回答
  • 0 关注
  • 83 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信