为了账号安全,请及时绑定邮箱和手机立即绑定

<?php
 $patterns = array (
    '/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/',
    '/^\s*{(\w+)}\s*=/'
    );
$replace = array ('\3/\4/\1\2', '$\1 =');
echo preg_replace($patterns, $replace, '{startDate} = 1999-5-27');

//为什么结果为: 而不是:5/27/1999 $startDate =

正在回答

5 回答

详细解释下:(19|20)表示取19或者20中任意一个数字,(\d{2})表示两个数字,(\d{1,2})表示1个或2个数字,(\d{1,2})表示1个或2个数字。^\s*{(\w+)\s*=}表示以任意空格开头的,并且包含在{}中的字符,并且以任意空格结尾的,最后有个=号的。然后你再根据$replace = array ('\3/\4/\1\2', '$\1 =');对应一下相应的值就可以了。也就是\3表示5,\4表示27,\1表示19,\2表示99,$\1表示$startDate

1 回复 有任何疑惑可以回复我~
#1

刘冰华 提问者

非常感谢!
2015-01-21 回复 有任何疑惑可以回复我~

我个人理解而言的话 ,就是   这个 preg_relace()函数的话,只是根据$replace 变量的中的顺序进行替换,而不改变原来字符前面的替换的,个人是这个样子理解的,感觉有点牵强  求各位大佬的详细解析

0 回复 有任何疑惑可以回复我~

确实是答非所问的 ,一点也没理解到,并不是让你去解析  什么意思  而是输出的顺序的问题

0 回复 有任何疑惑可以回复我~

答非所问

0 回复 有任何疑惑可以回复我~

$replace中$\1,具体什么意思

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
PHP进阶篇
  • 参与学习       181827    人
  • 解答问题       2577    个

轻松学习PHP中级课程,进行全面了解,用PHP快速开发网站程序

进入课程
意见反馈 帮助中心 APP下载
官方微信