[請益] 如何將字串中的連續數字加橫線後輸出?

作者: Minagi2005 (修畢)   2014-07-02 16:06:31
因系統奇怪的規則,需要將一串字串中若有連續數字(大於10位數,通常為手機號碼),
必須將其每四碼加一個"-"符號後輸出
例如原本字串為:「因有急事找您,我的手機為0910123456,請回電。」
輸出後變成:「因有急事找您,我的手機為0910-1234-56,請回電。」
由於本人尚屬新手,希望能盡量解釋的詳細一點...有程式碼更好Q_Q
煩請高手解答,謝謝!
作者: terrybob (罪雲樵)   2014-07-02 16:16:00
抓取數字:開頭09,並且為10碼長、10碼全為數字!
作者: tkdmaf (皮皮快跑)   2014-07-02 16:32:00
(1)正規表達式 (2)字串長度計算後插入符號。
作者: alog (A肉哥)   2014-07-02 16:33:00
trim(preg_replace('/(\d{4})/', '$1-', $cellphone), '-');不過通常應該是 0911-000-222 這種格式吧
作者: johnny1972 (傻蛋)   2014-07-02 16:48:00
alog的做法會變成5~9個連續數字也被加上-喔
作者: alog (A肉哥)   2014-07-02 16:50:00
應該要先分析好你的資料有哪幾種類型 再設計程式不然光幾個規則是無法適用全部$is_correct = preg_match('/^09\d{8}$/', $cellphone);
作者: terrybob (罪雲樵)   2014-07-02 17:04:00
建議用正規表達式,不過有難度XD
作者: alog (A肉哥)   2014-07-02 17:23:00
請以php manual 為準另外要移除數字以外的字元你可以這樣做 /[^\d]/
作者: MOONRAKER (㊣牛鶴鰻毛人)   2014-07-02 19:45:00
用十幾行寫出來就用十幾行 硬要用regex可能一會之後自己都看不懂當初為什麼這樣寫
作者: alog (A肉哥)   2014-07-02 22:06:00
IN/OUT要正確,至於用什麼RegExp or 純粹 String 處理都其次
作者: MOONRAKER (㊣牛鶴鰻毛人)   2014-07-03 00:44:00
對,in => out效果正確,code看得懂,就是最好的
作者: up9cloud (九天)   2014-07-03 01:32:00
只取代數字,建議regex。怕以後看無,加些註解就好@@
作者: hwChang (聰明是天賦 善良是選擇)   2014-07-05 16:32:00
加油加油,我最近剛好也在學習正規式。

Links booklink

Contact Us: admin [ a t ] ucptt.com