在之前的文章中我們介紹了不區分大小寫的將給定子串替換成其他值的方法,感興趣的可以點擊鏈接查閱→《PHP巧用函數將給定子串換成*號(大小寫不敏感)》。這次我們介紹一下使用PHP統計字串中字元出現次數的方法,有需要的可以參考參考。
相信,給一個字串“aaabbccqqwweeab”,如何統計出每個字元的出現次數?可以藉助循環
<?php header("Content-Type: text/html;charset=utf-8"); //设置字符编码 //统计字符串中出现的字符,出现次数 $str = 'aaabbccqqwweeab';//字符串示例 echo "字符串为:".$str.'<br/>'; $strRecord=array();//把出现过的字符记录在此数组中,如果记录有,则不记录, for($i=0;$i<strlen($str);$i++){ $found = 0;//默认设置为没有遇到过 foreach((array)$strRecord as $k=>$v){ if($str[$i] == $v['key']){ $strRecord[$k]['count'] += 1;//已经遇到,count + 1; $found = 1;//设置已经遇到过的,标记 continue;//如果已经遇到,不用再循环记录数组了,继续下一个字符串比较 } } if(!$found){ $strRecord[] = array('key'=>$str[$i],'count'=>1);//记录没有遇到过的字符串 } } echo '<pre class="brush:php;toolbar:false">'; print_r($strRecord); ?>
分析:
循環一次$str字串,將出現過的字元記錄在$strRecord數組(只記錄一次,如果重複了,就忽略)。
遍歷$strRecord數組,將字串中的每個字元($str[$i]
)和數組的值($strRecord[ ]['key']
)進行比較;如果記錄裡的某個值和這個字元一樣,就記錄次數($strRecord[]['count']
) 1。
我們來看看輸出結果:
OK,統計出來了!
但有時我們不需要統計全部字符,只需要計算指定的一個字符/子串的出現次數,這樣怎麼操作?
這也簡單,PHP提供了一個內建函數可以解決這個問題。讓我們來看看下面一個例子:
<?php header("Content-Type: text/html;charset=utf-8"); //设置字符编码 $str = 'aaabbccqqwweeab'; echo "字符串为:".$str.'<br/><br/>'; echo "字符串中出现了 ".substr_count($str,'a')." 次 a字符!"; echo "<br/><br/>字符串中出现了 ".substr_count($str,'ab')." 次 ab子串!"; ?>
分析:我們使用「substr_count($str,'a')
」和「substr_count($str,'ab')
」語句來統計字串$str中「a」字元和「ab」字元的出現次數。大家覺得這個會輸出什麼?是不是應該輸出「4」和「2」呀。那麼對不對?我們來看看輸出結果:
正確! 「a」字元和「ab」字元的出現次數就是「4」和「2」。
下面我們來了解這其中的關鍵函數substr_count()。
substr_count()函數可以計算子字串(由一個或多個字元組成)在字串中出現的次數(區分大小寫)。
substr_count($string,$substring,$start,$length)
函數接受2個必要參數$string和$substring、2個可省略參數$start和$length。
前2個必需參數我們透過上面的程式碼範例已經對大家有所了解,下面我們來看看2個可省略參數$start和$length。
$start:用於指定在字串中何處開始搜尋子字串
#$length:用於指定搜尋的長度
根據參數$start和$length設定的值不同,substr_count()函數傳回的值也不同。
<?php header("Content-Type: text/html;charset=utf-8"); //设置字符编码 $str = 'aaabbccqqwweeab'; echo "字符串为:".$str.'<br/><br/>'; echo "字符串中出现了 ".substr_count($str,'a',0,5)." 次 a字符!"; echo "<br/>字符串中出现了 ".substr_count($str,'a',2,5)." 次 a字符!"; echo "<br/><br/>字符串中出现了 ".substr_count($str,'ab',0,10)." 次 ab子串!"; echo "<br/>字符串中出现了 ".substr_count($str,'ab',3)." 次 ab子串!"; ?>
輸出結果:
好了就說到這裡了,有其他想知道的,可以點擊這個哦。 → →php影片教學
最後給大家推薦閱讀一個經典課程《PHP字串處理(玉女心經版)》,免費的~快來學習啊!
以上是PHP字串學習統計字元的出現次數的詳細內容。更多資訊請關注PHP中文網其他相關文章!