V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jacy
V2EX  ›  PHP

php正则匹配之后的字符串长度问题,求高手帮助

  •  
  •   jacy · 2013-09-20 17:34:30 +08:00 · 4401 次点击
    这是一个创建于 4074 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有一个html中包含很多个这样的:
    <i class="piaoshu">323</i>
    我要把323这样的数字获取到,我是这样写的:

    preg_match_all('/<i class="piaoshu">.*([\d\.]+?).*<\/i>/sU', $data, $matchnum);

    然后我想把获取到的数据按大小排序,但是发现排序结果是错误的,百思不得其解,后来用var_dump了一下 $matchnum,发现了问题:

    array(12) { [0]=> string(26) "323" [1]=> string(26) "120" [2]=> string(25) "83" [3]=> string(26) "244" [4]=> string(26) "149" [5]=> string(25) "84" [6]=> string(26) "101" [7]=> string(25) "47" [8]=> string(25) "67" [9]=> string(25) "83" [10]=> string(26) "351" [11]=> string(26) "222" }

    比如第一个323应该长度是3啊,怎么成26了?仔细算算,发现是长度和<i class="piaoshu">323</i>刚好一样?这是怎么回事?
    我要如何修改,能够正常用sort排序?
    10 条回复    1970-01-01 08:00:00 +08:00
    bitsmix
        1
    bitsmix  
       2013-09-20 17:56:56 +08:00
    1 发个 gist 嘛
    2 html 的话,不能换左用 dom 的方式操作嘛
    3 没明白正则跟排序有啥关系
    haiyang416
        2
    haiyang416  
       2013-09-20 18:05:33 +08:00 via Android
    正则式
    /<i class="piaoshu">(\d+)<\/i>/
    你那个我实在理解不能。
    andyhu
        3
    andyhu  
       2013-09-20 18:11:01 +08:00
    preg_match_all('/<i class="piaoshu">\s*?([\d\.]+?)\s*?<\/i>/si', $data, $matchnum);
    jacy
        4
    jacy  
    OP
       2013-09-20 18:12:52 +08:00
    @haiyang416 发现问题了,正则式写错了,我只要像323这样的数字,但是实际标签也匹配出来了,刚好在浏览器中要不显示出标签。
    我只有匹配出数字,怎样写
    正则实在学不会
    jacy
        5
    jacy  
    OP
       2013-09-20 18:22:24 +08:00
    @andyhu 发现问题了,这样的结果是<i class="piaoshu">323</i>,刚好浏览器里只显示323,标签没显示出来
    但是我只要323,怎样写?
    jacy
        6
    jacy  
    OP
       2013-09-20 18:39:38 +08:00
    好吧,我知道原因了。$matchnum[0]和$matchnum[1]是不一样的,我应该用1.
    Mutoo
        7
    Mutoo  
       2013-09-20 18:52:13 +08:00
    @jacy 对的,0是原字符串,1才是第一个括号匹配位置
    yakczh
        8
    yakczh  
       2013-09-20 18:57:17 +08:00
    恭喜你,答对了
    pathletboy
        9
    pathletboy  
       2013-09-20 19:18:22 +08:00
    @jacy 0是匹配到的完整字符串。
    chenwl
        10
    chenwl  
       2013-09-21 13:09:47 +08:00
    呵呵~成问答帖了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4421 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 10:07 · PVG 18:07 · LAX 02:07 · JFK 05:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.