正則表示式解決結巴字串
阿新 • • 發佈:2018-12-13
有以下一個比較有趣的問題:
我們有一個字串:你是是不不不是是想想想出出出去去玩玩啊啊啊
上面這一個字串,好像是一個有口吃的人在說話。
我們需要把這句話整理成:你是不是想出去玩啊
思考一下該怎麼去實現。
↓
↓
↓
↓
思考的怎麼樣了?下面我給出我的解決方案:
方案:
利用正則表示式解決(會用到反向引用的概念,不懂正則反向引用的可以去百度瞭解一下)
以下是程式碼:
//利用正則解決結巴字串
<?php
$str = "你是是不不不是是想想想出出出去去玩玩啊啊啊";
$reg = '/([\x{4e00}-\x{9fa5}])\1/iu'; //其中最後的u表示字元編碼遵循utf8規範 \1表示反向引用第一個子表示式 [\x{4e00}-\x{9fa5}]表示中文字元編碼區段
preg_match_all($reg,$str,$res);
var_dump($res); //可以列印看一下$res是什麼
$resstr = implode('',$res[1]); //php陣列轉化為字串的方法,以空字串為分隔。
echo '<hr>';
echo $resstr;
?>
執行以上程式碼會得到以下結果:
這樣就解決了上面的結巴字串問題。
這只是一個思路,解決問題的方法很多,大家也可以通過其它的方式去實現這一效果。