BoyLee 2011-03-28 15:54:52 3015次浏览 7条回复 0 0 0

抓了一段html代码

<span><a href="http://xxxxx/xxxxxxxxx.aspx?value=%e6%88%98%e5%a3%ab#ul-yx">战士</a>&nbsp;&nbsp;&nbsp;<a href="http://xxxxxxxxxxxxxx.aspx?value=%e5%88%ba%e5%ae%a2#ul-yx">刺客</a>

然后我现在想抓里面 刺客2个字,我写了一个正则

preg_match_all('|>([\S]{2})<|', $outMTopDiv1[1][0], $outMTopDiv, PREG_SET_ORDER);

我在线测了下 >([\S]{2})< 这个在 http://regexpal.com/里面可以正常抓到,但是放到php里面就失效了,如果去掉 > < 就可以抓到 可是太多了。。。是不是><这个引起冲突了

  • 回复于 2011-03-28 16:05 举报

    扔掉括号就好了。。。这是为什么呢?

  • 回复于 2011-03-28 16:07 举报
    preg_match_all('|>([\S]{2})<|u', $outMTopDiv1[1][0], $outMTopDiv, PREG_SET_ORDER);
    

    是改成这样就好了,求解为什么? 强制unicode就好了?

  • 回复于 2011-03-28 16:17 举报

    好像一样啊?是吗??

  • 回复于 2011-03-28 16:36 举报

    就是为什么 一个工作一个不工作。。。

  • 回复于 2011-03-28 16:37 举报

    你能说一下,什么时候工作,什么时候不工作?

  • 回复于 2011-03-29 11:04 举报

    正则.......看了就头痛却又很重要的东西......

  • 回复于 2011-03-29 11:33 举报

    扫描对象是这个字符串

    <span><a href="http://xxxxx/xxxxxxxxx.aspx?value=%e6%88%98%e5%a3%ab#ul-yx">战士</a>&nbsp;&nbsp;&nbsp;<a href="http://xxxxxxxxxxxxxx.aspx?value=%e5%88%ba%e5%ae%a2#ul-yx">刺客</a>
    

    目的 提取:战士 和刺客 2个关键词

    正则:
    工作的情况:(get words)

    preg_match_all('|>([\S]{2})<|u', $outMTopDiv1[1][0], $outMTopDiv, PREG_SET_ORDER);
    

    不工作的情况:(empty array)

    preg_match_all('|>([\S]{2})<|', $outMTopDiv1[1][0], $outMTopDiv, PREG_SET_ORDER);
    

    我很迷惑。。

您需要登录后才可以回复。登录 | 立即注册