向高手求两正则表达式!! $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); php文件下载代码怎么写? 日期字段的比较 请问怎样用PHP设置打印纸张的尺寸和横向打印? 20分求助一下PHP的编译问题 关于手册中的这个正则,很不理解 菜鸟问个编码问题常用的utf-8是哪种啊?utf_bin,utf_czech_ci???? 关于跳转页面的提交 在PHP中,如何传递参数,关于下拉列表框的问题!在线等待 怎样把远端虚拟主机上超过100M的mysql数据库备份到本地?急!!! 与市场上通过网站的web发送短信相反,web能接受短信吗?如何完成? 研究了一天无结果:代码转换成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);