向高手求两正则表达式!! $st = 'DH20070121-00001';if(eregi('^DH([1-9][0-9]{7})-[0-9]{5}$', $st)){ echo 'OK';}else{ echo 'NO';} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 print ereg("^DH[0-9]{8}-[0-9]{5}$","DH20070121-00001");成功返回1,失败返回0 $st = 'DH20070121-00001';eregi('^DH([0-9]{8})-([0]{0,4})[1]([0-9]{0,4})', $st)试一试。 我就是想实现smarty里的函数一样 楼主,还是没弄明白你的意思:既然有PHP函数,干吗还要搞出个规则?你的意图是什么,说明白了我们才好帮你。 是这样,我准备在数据库中定义几个编码规则,比如订单的编码规则,由用户自己定义,我们给用户一些类似函数一样的规则方式,供用户进行定义,如果订单的编码规则定义为DH{date(Ymd)}-{number(5,1)},则程序中根据用户定义的规则,生成的编码为:DH20070121-00001,这则表达式的意思如下:{date(Ymd)}:表示调用PHP的date函数,并用年月日表示出来{number(5,1)}:表示一个数字,长度为5位,起始号码为1,如00001或01234当然,这个number(5,1)以后会根据记录的增加进行递增。 模板化然后repalce最后使用eval直接执行此部分代码即可:$str="\$val='DH'.date(Ymd);";eval($str);print $val; function number($param) { list($len, $start) = split(',', $param); return str_pad($start, $len, '0', STR_PAD_LEFT);}$p = 'DH{date(Ymd)}-{number(5,1)}';echo preg_replace("/{(\w+)\((.+?)\)}/e", "$1('$2')", $p); 升级WAMPSERVER后运行php程序总报错,求助! PHP连接访问本地DBF文件 session_id经常变,导致无法正常使用session。世界太难题! 如何在会员注册添加身份证和真实姓名验证? $this->add用法是什么? 多表操作 第一次来web开发区,问个白痴点的问题 关于phplib中的db_mysql.php的使用 刚刚学习PHP的人,请教的一个问题.! 关于递归函数的疑问 研究了一天无结果:代码转换成UTF8后出现"未结束的字符串常量"错误. 执行MYSQL语句出错!不明白?
试一试。
既然有PHP函数,干吗还要搞出个规则?你的意图是什么,说明白了我们才好帮你。
{date(Ymd)}:表示调用PHP的date函数,并用年月日表示出来
{number(5,1)}:表示一个数字,长度为5位,起始号码为1,如00001或01234当然,这个number(5,1)以后会根据记录的增加进行递增。
$str="\$val='DH'.date(Ymd);";
eval($str);
print $val;
list($len, $start) = split(',', $param);
return str_pad($start, $len, '0', STR_PAD_LEFT);
}$p = 'DH{date(Ymd)}-{number(5,1)}';echo preg_replace("/{(\w+)\((.+?)\)}/e", "$1('$2')", $p);