有个小问题

有个小问题

$pattern = '/(\d{4})\/(\d{2})\/(\d{2})/';

$subject='2017/10/10';

$res=preg_replace_callback($pattern,'nextyear',$subject);

function nextyear($var){

    return ($var[1]+1).'/'.($var[2]+1).'/'.($var[3]+1);

}

echo $res;

为什么当$pattern = '/(\d{4})(\d{2})(\d{2})/';时取不到内容

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小尤 2019-07-23 18:42:58

同学你好,因'/(\d{4})(\d{2})(\d{2})/只是匹配数字,并没有寻找到全是数字的字符(如果将日期中的/去掉就可以匹配到了)。而/(\d{4})\/(\d{2})\/(\d{2})/中间使用/进行拼接可以匹配到全部日期。祝学习愉快!

  • 提问者 慕仙0328516 #1
    我匹配到了数字再在回调函数中加'/'不行吗,我为的就是使用那匹配到的数字呀?
    2019-07-24 11:45:23
  • 好帮手慕小尤 回复 提问者 慕仙0328516 #2
    同学你好,也是可以的,但使用/(\d{4})(\d{2})(\d{2})/无法匹配到中间有斜杠(/)的数字,可尝试在分组中加上|(/(\d{4})|(\d{2})|(\d{2})/)匹配数字。祝学习愉快!
    2019-07-24 12:06:28
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师