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

看板PHP作者 (孫小美)時間11年前 (2014/07/02 16:06), 11年前編輯推噓3(3014)
留言17則, 7人參與, 最新討論串1/2 (看更多)
因系統奇怪的規則,需要將一串字串中若有連續數字(大於10位數,通常為手機號碼), 必須將其每四碼加一個"-"符號後輸出 例如原本字串為:「因有急事找您,我的手機為0910123456,請回電。」 輸出後變成:「因有急事找您,我的手機為0910-1234-56,請回電。」 由於本人尚屬新手,希望能盡量解釋的詳細一點...有程式碼更好Q_Q 煩請高手解答,謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 175.98.127.126 ※ 文章網址: http://www.ptt.cc/bbs/PHP/M.1404288395.A.407.html

07/02 16:16, , 1F
抓取數字:開頭09,並且為10碼長、10碼全為數字!
07/02 16:16, 1F

07/02 16:32, , 2F
(1)正規表達式 (2)字串長度計算後插入符號。
07/02 16:32, 2F

07/02 16:33, , 3F
trim(preg_replace('/(\d{4})/', '$1-', $cellphone), '-');
07/02 16:33, 3F

07/02 16:33, , 4F
不過通常應該是 0911-000-222 這種格式吧
07/02 16:33, 4F
a大太神了,我以為要10幾行程式碼...ptt版真是臥虎藏龍,p幣奉上 再請問一下能做到像您說的這種格式嗎? ※ 編輯: Minagi2005 (175.98.127.126), 07/02/2014 16:47:56

07/02 16:48, , 5F
alog的做法會變成5~9個連續數字也被加上-喔
07/02 16:48, 5F

07/02 16:50, , 6F
應該要先分析好你的資料有哪幾種類型 再設計程式
07/02 16:50, 6F

07/02 16:51, , 7F
不然光幾個規則是無法適用全部
07/02 16:51, 7F
內容就是像我舉例的那樣子了,簡單的一小段文字+幾串數字在中間 數字只需要處理大於等於10碼的連續數字,也幾乎都是手機號碼 ※ 編輯: Minagi2005 (175.98.127.126), 07/02/2014 16:55:44

07/02 17:00, , 8F
$is_correct = preg_match('/^09\d{8}$/', $cellphone);
07/02 17:00, 8F
這行程式碼只顯示0耶@@,這是在判斷是否有10碼以上的數字?

07/02 17:04, , 9F
建議用正規表達式,不過有難度XD
07/02 17:04, 9F
※ 編輯: Minagi2005 (175.98.127.126), 07/02/2014 17:12:52

07/02 17:23, , 10F
請以php manual 為準
07/02 17:23, 10F

07/02 17:25, , 11F
另外要移除數字以外的字元你可以這樣做 /[^\d]/
07/02 17:25, 11F

07/02 19:45, , 12F
用十幾行寫出來就用十幾行 硬要用regex可能一會之後自己
07/02 19:45, 12F

07/02 19:45, , 13F
都看不懂當初為什麼這樣寫
07/02 19:45, 13F

07/02 22:06, , 14F
IN/OUT要正確,至於用什麼RegExp or 純粹 String 處理都其次
07/02 22:06, 14F

07/03 00:44, , 15F
對,in => out效果正確,code看得懂,就是最好的
07/03 00:44, 15F

07/03 01:32, , 16F
只取代數字,建議regex。怕以後看無,加些註解就好@@
07/03 01:32, 16F
問題已解決,感謝大家幫忙Q_Q,ptt高手真的好多,看來要再多鑽研RegExp才行, 太感謝大家了! ※ 編輯: Minagi2005 (175.98.127.126), 07/03/2014 14:02:13

07/05 16:32, , 17F
加油加油,我最近剛好也在學習正規式。
07/05 16:32, 17F
文章代碼(AID): #1JixsBG7 (PHP)
文章代碼(AID): #1JixsBG7 (PHP)