+ -
当前位置:首页 → 问答吧 → 虚心求教一个正则表达式

虚心求教一个正则表达式

时间:2010-01-13

来源:互联网

     鄙人,做一个小偷程序。  现在算是完成了一半,卡在了用正则提取内容上了。 
    我已经把别人的网站截取下来了。 下面的代码是别人网站的部分内容(这是我需要的部分),我发现了一个规律就是都是以<UL class="ubox boxsp g_dn"开头,以</UL>结尾。  。下面的代码我列出了三个<UL class="ubox boxsp g_dn" >.......</UL> ,总共有50个。
    我现在就是想把每个UL里面的内容截取出来入到自己库存。  我用的正则式:$reg="/(^<UL class=\"ubox boxsp g_dn\"(.*)</UL>$)+/i";  但是总是提示出错。希望高人给我指点下,谢谢,这个问题困扰我好久了。    另外我是用preg_match_all()

<UL class="ubox boxsp g_dn" id=s_1_1 onclick=javascript:ChangebgColor(this);>
  <LI class=r0><INPUT class=mt6 type=checkbox
  value=52b1263b-2395-4eea-809d-0dd1355c9178 name=icchk></LI>
  <LI class=r1>
  <DIV class=bordd></DIV></LI>
  <LI class=r2>
  <DIV class=d1>
  <DIV class=bordd></DIV>
  <DIV class=d2>
  <DIV class=bordd></DIV></DIV></DIV></LI>
  <LI class=r3>
  <DIV class=d1>AD620ARZ</DIV>
  <DIV class=d2><A href="]"
  target=_blank><IMG class=g_vm alt=供应商承诺该库存为原装现货库存
  src="ad620%20IC%20ad620现货%20ad620制造商_files/yzico.gif"></A></DIV></LI>
  <LI class=r4>
  <DIV class=bordd title=ANALOGDE>ANALOG</DIV></LI>
  <LI class=r5>
  <DIV class=bordd>07+</DIV></LI>
  <LI class=r6>
  <DIV class=bordd title=34>34</DIV></LI>
  <LI class=r7>
  <DIV class=bordd title=Original>Origin</DIV></LI>
  <LI class=r8>
  <DIV class=bordd></DIV></LI>
  <LI class=r9>
  <DIV class=bordd>上海</DIV></LI>
  <LI class=r10><A href="“ 
  target=_blank><IMG alt=询价
  src="ad620%20IC%20ad620现货%20ad620制造商-_files/xunjia.gif"></A><A
  title=与该供应商留言
  href="javascript:HqmChat('315395','0a0c3388-ad60-47e1-8e70-5aac01b12a7e');"><IMG
  alt=与该供应商留言
  src="ad620%20IC%20ad620现货%20ad620制造商-_files/qiaqia_gray.gif"></A></LI>
</UL>

<UL class="ubox boxsp g_dn" id=s_1_2 onclick=javascript:ChangebgColor(this);>
  <LI class=r0><INPUT class=mt6 type=checkbox
  value=ecb3313e-2c67-43e5-842b-2d1de7c538ea name=icchk></LI>
  <LI class=r1>
  <DIV class=bordd></DIV></LI>
  <LI class=r2>
  <DIV class=d1>
  <DIV class=bordd></DIV>
  <DIV class=d2>
  <DIV class=bordd></DIV></DIV></DIV></LI>
  <LI class=r3>
  <DIV class=d1>AD620BNZ</DIV>
  <DIV class=d2><A href=""
  target=_blank><IMG class=g_vm alt=供应商承诺该库存为原装现货库存
  src="ad620%20IC%20ad620现货%20ad620制造商_files/yzico.gif"></A></DIV></LI>
  <LI class=r4>
  <DIV class=bordd title=ANALOGDE>ANALOG</DIV></LI>
  <LI class=r5>
  <DIV class=bordd>07+</DIV></LI>
  <LI class=r6>
  <DIV class=bordd title=2>2</DIV></LI>
  <LI class=r7>
  <DIV class=bordd title=Original>Origin</DIV></LI>
  <LI class=r8>
  <DIV class=bordd></DIV></LI>
  <LI class=r9>
  <DIV class=bordd>上海</DIV></LI>
  <LI class=r10><A href=""
  target=_blank><IMG alt=询价
  src="ad620%20IC%20ad620现货%20ad620制造商_files/xunjia.gif"></A><A
  title=与该供应商留言
  href="javascript:HqmChat('315395','0a0c3388-ad60-47e1-8e70-5aac01b12a7e');"><IMG
  alt=与该供应商留言
  src="ad620%20IC%20ad620现货%20ad620制造商files/qiaqia_gray.gif"></A></LI>
</UL>

<UL class="ubox boxsp g_dn" id=s_1_3 onclick=javascript:ChangebgColor(this);>
  <LI class=r0><INPUT class=mt6 type=checkbox
  value=a6fd6122-027f-4fc0-8782-fd25612a6b14 name=icchk></LI>
  <LI class=r1>
  <DIV class=bordd></DIV></LI>
  <LI class=r2>
  <DIV class=d1>
  <DIV class=bordd></DIV>
  <DIV class=d2>
  <DIV class=bordd></DIV></DIV></DIV></LI>
  <LI class=r3>
  <DIV class=d1>AD620BRZ</DIV>
  <DIV class=d2><A href=""
  target=_blank><IMG class=g_vm alt=供应商承诺该库存为原装现货库存
  src="ad620%20IC%20ad620现货%20ad620制造商-_files/yzico.gif"></A></DIV></LI>
  <LI class=r4>
  <DIV class=bordd title=ANALOGDE>ANALOG</DIV></LI>
  <LI class=r5>
  <DIV class=bordd>07+</DIV></LI>
  <LI class=r6>
  <DIV class=bordd title=50>50</DIV></LI>
  <LI class=r7>
  <DIV class=bordd title=Original>Origin</DIV></LI>
  <LI class=r8>
  <DIV class=bordd></DIV></LI>
  <LI class=r9>
  <DIV class=bordd>上海</DIV></LI>
  <LI class=r10><A href=""
  target=_blank><IMG alt=询价
  src="ad620%20IC%20ad620现货%20ad620制造商_files/xunjia.gif"></A><A
  title=与该供应商留言
  href="javascript:HqmChat('315395','0a0c3388-ad60-47e1-8e70-5aac01b12a7e');"><IMG
  alt=与该供应商留言
  src="ad620%20IC%20ad620现货%20ad620制造商-_files/qiaqia_gray.gif"></A></LI>
</UL>

作者: lzzzwl   发布时间: 2010-01-13

$reg="/(^<UL class=\"ubox boxsp g_dn\"([\d\D]*)<\/UL>$)+/";

作者: tafengnanhai   发布时间: 2010-01-13

怎么没有人解答啊???????    呼唤高手啊

作者: lzzzwl   发布时间: 2010-01-13

我写的那个是测试通过了的哦

作者: tafengnanhai   发布时间: 2010-01-13

你好, 你写的那个。我试了一下,正则式好像没错,但是没有取到内容,返回的数组为空??

作者: lzzzwl   发布时间: 2010-01-13

$reg="/(^<UL class=\"ubox boxsp g_dn\"(.*)</UL>$)+/i";

$reg="/(^<UL class=\"ubox boxsp g_dn\"([\d\D]*)<\/UL>$)+/";
有几个地方改动,可以对照参考一下

作者: tafengnanhai   发布时间: 2010-01-13

嗯,谢谢你,你的正则式没有错了。但是提示:Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 1 bytes).
这一行是preg_match_all($reg, $conten,$result);  难道是preg_match_all返回的数组有限制?

作者: lzzzwl   发布时间: 2010-01-13

程序运行占用的记忆空间超过了8M,我改了php.ini设置现在好了。还是谢谢你

作者: lzzzwl   发布时间: 2010-01-13