作者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/cn.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