难题,你会解决吗?

sancyxu 2008-12-02 03:52:38
<?php
$idata=$_POST['ddd'];
if ($idata)
{
$regstr="/\d\.(.*?)[a,A]\.(.*?)[b,B]\.(.*?)[c,C]\.(.*?)[d,D]\.(.*?)/is";

if(preg_match_all($regstr,$idata,$a))
{

foreach ($a as $b)
print_r($a);

}
}
?>

为什么我的不到选项D的数据???

提交文本如下:

==================
1.《中华人民共和国营业税暂行条例》的法律级次属于( ).
  A.财政部制定的部门规章
  B.全国人大授权国务院立法
  C.国务院制定的税收行政法规
  D.全国人大制定的税收法律
2.根据税收征收管理法及其他相关规定,对税务机关的征税行为提起诉讼,必须先经过复议,对复议决定不服的,可以在接到复议决定书之日起的一定时限内向人民法院起诉。下列各项中,符合上述时限规定的是( ).
  A.15日
  B.30日
  C.60日
  D.90日

  
...全文
64 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
an9ryfr09 2008-12-02
  • 打赏
  • 举报
回复
既然post过来的整个内容你都要,干嘛还用正则去取啊???
an9ryfr09 2008-12-02
  • 打赏
  • 举报
回复
你这个问题是由于使用了懒惰模式造成的。

$regstr="/\d\.(.*?)[a,A]\.(.*?)[b,B]\.(.*?)[c,C]\.(.*?)[d,D]\.(.*?)/is";

最后这里的[d,D]\.(.*?)用贪婪模式,别用懒惰模式。改为[d,D]\.(.*)

另外,你都加入i选项了,干嘛还顾及大小写?


把正则改为:
/\d\.(.*?)[a]\.(.*?)[b]\.(.*?)[c]\.(.*?)[d]\.(.*)/is
程序猿之殇 2008-12-02
  • 打赏
  • 举报
回复
一问多帖,呵呵,去你上个帖子去看看吧.
hqaht 2008-12-02
  • 打赏
  • 举报
回复
<?php 
$idata=$_POST['ddd'];
if ($idata)
{
$regstr="/\d\.(.*?)[a,A]\.(.*?)[b,B]\.(.*?)[c,C]\.(.*?)[d,D]\.(.*?)/is";

if(preg_match_all($regstr,$idata,$a))
{

foreach ($a as $b)
print_r($b);

}
}
?>


上面打印$a做什么呢?不是想看匹配出来的值吗,应该是$b呀

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧