V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
gengyanda
V2EX  ›  问与答

如何在PHP中使用正则表达式匹配html某标签内的特定几个属性

  •  
  •   gengyanda · 2013-08-30 21:31:24 +08:00 · 5241 次点击
    这是一个创建于 3898 天前的主题,其中的信息可能已经有所发展或是发生改变。
    大概有一个html表单,里面全都是这些:
    <input type="hidden" name="from" value="xx"/>
    <input type="hidden" name="type" value="number"/>
    ...

    我想匹配出每个input的type,name和value属性。
    写了一个正则,

    {<input(\s+(name|type|value)="(.*)")+\s*/>},

    能匹配到type是不错,可是之后就一直匹配出了

    'hidden" name="type" value="number'

    这些。
    试着加了U,反而只能匹配出一个value了。

    目前没什么辙,哪位懂正则的帮忙解答下。
    5 条回复    1970-01-01 08:00:00 +08:00
    alexrezit
        1
    alexrezit  
       2013-08-30 21:33:47 +08:00
    你选错了方向. 请用 XPath.
    gengyanda
        2
    gengyanda  
    OP
       2013-08-30 21:35:09 +08:00
    @alexrezit 毕竟只是个小程序,觉得动用xml这类先进武器有些杀鸡焉用宰牛刀了。
    alexrezit
        3
    alexrezit  
       2013-08-30 21:40:44 +08:00
    @gengyanda
    你还是没懂.
    Perry
        4
    Perry  
       2013-08-30 22:45:56 +08:00 via iPhone
    skyangel3
        5
    skyangel3  
       2013-08-31 01:34:42 +08:00
    {<input(\s+(name|type|value)="(.*)"\s+)+\s*/>}

    加个\s+看看, 如果你给个数据html, 我可以帮忙做看看
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2225 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 08:29 · PVG 16:29 · LAX 01:29 · JFK 04:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.