作者Minagi2005 (孫小美)
看板PHP
標題[請益] 如何將字串中的連續數字加橫線後輸出?
時間Wed Jul 2 16:06:31 2014
因系統奇怪的規則,需要將一串字串中若有連續數字(大於10位數,通常為手機號碼),
必須將其每四碼加一個"-"符號後輸出
例如原本字串為:「因有急事找您,我的手機為0910123456,請回電。」
輸出後變成:「因有急事找您,我的手機為0910-1234-56,請回電。」
由於本人尚屬新手,希望能盡量解釋的詳細一點...有程式碼更好Q_Q
煩請高手解答,謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 175.98.127.126
※ 文章網址: http://webptt.com/m.aspx?n=bbs/PHP/M.1404288395.A.407.html
1F:→ terrybob:抓取數字:開頭09,並且為10碼長、10碼全為數字! 07/02 16:16
2F:→ tkdmaf:(1)正規表達式 (2)字串長度計算後插入符號。 07/02 16:32
3F:→ alog:trim(preg_replace('/(\d{4})/', '$1-', $cellphone), '-'); 07/02 16:33
4F:→ alog:不過通常應該是 0911-000-222 這種格式吧 07/02 16:33
a大太神了,我以為要10幾行程式碼...ptt版真是臥虎藏龍,p幣奉上
再請問一下能做到像您說的這種格式嗎?
※ 編輯: Minagi2005 (175.98.127.126), 07/02/2014 16:47:56
5F:推 johnny1972:alog的做法會變成5~9個連續數字也被加上-喔 07/02 16:48
6F:→ alog:應該要先分析好你的資料有哪幾種類型 再設計程式 07/02 16:50
7F:→ alog:不然光幾個規則是無法適用全部 07/02 16:51
內容就是像我舉例的那樣子了,簡單的一小段文字+幾串數字在中間
數字只需要處理大於等於10碼的連續數字,也幾乎都是手機號碼
※ 編輯: Minagi2005 (175.98.127.126), 07/02/2014 16:55:44
8F:→ alog:$is_correct = preg_match('/^09\d{8}$/', $cellphone); 07/02 17:00
這行程式碼只顯示0耶@@,這是在判斷是否有10碼以上的數字?
9F:推 terrybob:建議用正規表達式,不過有難度XD 07/02 17:04
※ 編輯: Minagi2005 (175.98.127.126), 07/02/2014 17:12:52
10F:→ alog:請以php manual 為準 07/02 17:23
11F:→ alog:另外要移除數字以外的字元你可以這樣做 /[^\d]/ 07/02 17:25
12F:→ MOONRAKER:用十幾行寫出來就用十幾行 硬要用regex可能一會之後自己 07/02 19:45
13F:→ MOONRAKER:都看不懂當初為什麼這樣寫 07/02 19:45
14F:→ alog:IN/OUT要正確,至於用什麼RegExp or 純粹 String 處理都其次 07/02 22:06
15F:→ MOONRAKER:對,in => out效果正確,code看得懂,就是最好的 07/03 00:44
16F:→ up9cloud:只取代數字,建議regex。怕以後看無,加些註解就好@@ 07/03 01:32
問題已解決,感謝大家幫忙Q_Q,ptt高手真的好多,看來要再多鑽研RegExp才行,
太感謝大家了!
※ 編輯: Minagi2005 (175.98.127.126), 07/03/2014 14:02:13
17F:推 hwChang:加油加油,我最近剛好也在學習正規式。 07/05 16:32