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