晕了 ,求个正则表达式 php的, 在线等....

cluonani 2013-05-21 02:52:34
html是这样的


<div class="itemCartContaine">
<input type="radio" name="BTN_GROUP_59679208328481" value="22334875:SHIP_TO_HOME:1" onclick="">
<input type="radio" name="BTN_GROUP_59679208328481" value="22334875:SHIP_TO_HOME:2" onclick="">
<input type="radio" name="BTN_GROUP_59679208328481" value="22334875:SHIP_TO_HOME:3" onclick="" checked="">
<textarea id="IncludeMessage" name="TEXTAREA_59679208328481" onclick="WALMART.checkout.shipping.giftMsgOnClick(this);" onkeyup="WALMART.checkout.shipping.giftMsgLimiter(this, 59679208328481)">Enter your gift message here</textarea>
</div>

<div class="itemCartContaine">
<input type="radio" name="BTN_GROUP_59679208328482" value="22334876:SHIP_TO_HOME:1" onclick="">
<input type="radio" name="BTN_GROUP_59679208328482" value="22334876:SHIP_TO_HOME:2" onclick="" checked="">
<input type="radio" name="BTN_GROUP_59679208328482" value="22334876:SHIP_TO_HOME:3" onclick="">
<textarea id="IncludeMessage2" name="TEXTAREA_59679208328482" onclick="" onkeyup="">Enter your gift message here2</textarea>
</div>


想些个正则表达式,得到结果大约是这样的.死活写不出.功夫不到家..
求大神,取得单选框匹配checked的值和下面textarea的值,最后想要的的大约是这样的

[1] => Array
(
[0] => BTN_GROUP_59679208328481
[1] => BTN_GROUP_59679208328482
[2] => TEXTAREA_59679208328481
[3] => TEXTAREA_59679208328482
)

[2] => Array
(
[0] => 22334875:SHIP_TO_HOME:3
[1] => 22334876:SHIP_TO_HOME:2
[2] => Enter your gift message here
[3] => Enter your gift message here2
)

就用is,不用isu
可以实现吗
...全文
89 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cluonani 2013-05-21
  • 打赏
  • 举报
回复
引用 5 楼 jordan102 的回复:
提供正则,然后你自己再处理下就可以实现。
$s=<<<div
<div class="itemCartContaine">
<input type="radio" name="BTN_GROUP_59679208328481" value="22334875:SHIP_TO_HOME:1" onclick="">
<input type="radio" name="BTN_GROUP_59679208328481" value="22334875:SHIP_TO_HOME:2" onclick="">
<input type="radio" name="BTN_GROUP_59679208328481" value="22334875:SHIP_TO_HOME:3" onclick="" checked="">
<textarea id="IncludeMessage" name="TEXTAREA_59679208328481" onclick="WALMART.checkout.shipping.giftMsgOnClick(this);" onkeyup="WALMART.checkout.shipping.giftMsgLimiter(this, 59679208328481)">Enter your gift message here</textarea>
</div>

<div class="itemCartContaine">
<input type="radio" name="BTN_GROUP_59679208328482" value="22334876:SHIP_TO_HOME:1" onclick="">
<input type="radio" name="BTN_GROUP_59679208328482" value="22334876:SHIP_TO_HOME:2" onclick="" checked="">
<input type="radio" name="BTN_GROUP_59679208328482" value="22334876:SHIP_TO_HOME:3" onclick="">
<textarea id="IncludeMessage2" name="TEXTAREA_59679208328482" onclick="" onkeyup="">Enter your gift message here2</textarea>
</div>
div;
preg_match_all('/name="([^\"]+)" value="([^\"]+)" onclick="" checked="">.+?<textarea[^>]+name="(.+?)"[^>]+>([^<]+)</is',$s,$m);
print_r($m);
Array ( [0] => Array ( [0] => name="BTN_GROUP_59679208328481" value="22334875:SHIP_TO_HOME:3" onclick="" checked=""> <textarea id="IncludeMessage" name="TEXTAREA_59679208328481" onclick="WALMART.checkout.shipping.giftMsgOnClick(this);" onkeyup="WALMART.checkout.shipping.giftMsgLimiter(this, 59679208328481)">Enter your gift message here< [1] => name="BTN_GROUP_59679208328482" value="22334876:SHIP_TO_HOME:2" onclick="" checked=""> <input type="radio" name="BTN_GROUP_59679208328482" value="22334876:SHIP_TO_HOME:3" onclick=""> <textarea id="IncludeMessage2" name="TEXTAREA_59679208328482" onclick="" onkeyup="">Enter your gift message here2< ) [1] => Array ( [0] => BTN_GROUP_59679208328481 [1] => BTN_GROUP_59679208328482 ) [2] => Array ( [0] => 22334875:SHIP_TO_HOME:3 [1] => 22334876:SHIP_TO_HOME:2 ) [3] => Array ( [0] => TEXTAREA_59679208328481 [1] => TEXTAREA_59679208328482 ) [4] => Array ( [0] => Enter your gift message here [1] => Enter your gift message here2 ) )
用这个,这个很简单,谢谢乔大神,我记得上次也是你帮我解决了一个很麻烦的. 膜拜啊.大神...
cluonani 2013-05-21
  • 打赏
  • 举报
回复
引用 7 楼 chinmo 的回复:
[quote=引用 6 楼 cluonani 的回复:] [quote=引用 2 楼 chinmo 的回复:]
$pattern='/<input type="radio" name="([^"]*?)" value="([^"]*?)" ([^>]*?)>(.*?)<input type="radio" name="([^"]*?)" value="([^"]*?)" ([^>]*?)>(.*?)<input type="radio" name="([^"]*?)" value="([^"]*?)" ([^>]*?)>(.*?)<textarea id="([^"]*?)" name="([^"]*?)" ([^>]*?)>([^<]*?)<\/textarea>/sm';
首先谢谢版主, 这个好像还要对数据做二次处理吧. 就是循环数组判断哪个选择了.[/quote] 不用判断,直接可以知道的 你把数组重组成你想要的数组就可以了[/quote] 倒是取出来了..呵呵.谢谢.
  • 打赏
  • 举报
回复
引用 6 楼 cluonani 的回复:
[quote=引用 2 楼 chinmo 的回复:]
$pattern='/<input type="radio" name="([^"]*?)" value="([^"]*?)" ([^>]*?)>(.*?)<input type="radio" name="([^"]*?)" value="([^"]*?)" ([^>]*?)>(.*?)<input type="radio" name="([^"]*?)" value="([^"]*?)" ([^>]*?)>(.*?)<textarea id="([^"]*?)" name="([^"]*?)" ([^>]*?)>([^<]*?)<\/textarea>/sm';
首先谢谢版主, 这个好像还要对数据做二次处理吧. 就是循环数组判断哪个选择了.[/quote] 不用判断,直接可以知道的 你把数组重组成你想要的数组就可以了
cluonani 2013-05-21
  • 打赏
  • 举报
回复
引用 2 楼 chinmo 的回复:
$pattern='/<input type="radio" name="([^"]*?)" value="([^"]*?)" ([^>]*?)>(.*?)<input type="radio" name="([^"]*?)" value="([^"]*?)" ([^>]*?)>(.*?)<input type="radio" name="([^"]*?)" value="([^"]*?)" ([^>]*?)>(.*?)<textarea id="([^"]*?)" name="([^"]*?)" ([^>]*?)>([^<]*?)<\/textarea>/sm';
首先谢谢版主, 这个好像还要对数据做二次处理吧. 就是循环数组判断哪个选择了.
一起混吧 2013-05-21
  • 打赏
  • 举报
回复
提供正则,然后你自己再处理下就可以实现。
$s=<<<div
<div class="itemCartContaine">
<input type="radio" name="BTN_GROUP_59679208328481" value="22334875:SHIP_TO_HOME:1" onclick="">
<input type="radio" name="BTN_GROUP_59679208328481" value="22334875:SHIP_TO_HOME:2" onclick="">
<input type="radio" name="BTN_GROUP_59679208328481" value="22334875:SHIP_TO_HOME:3" onclick="" checked="">
<textarea id="IncludeMessage" name="TEXTAREA_59679208328481" onclick="WALMART.checkout.shipping.giftMsgOnClick(this);" onkeyup="WALMART.checkout.shipping.giftMsgLimiter(this, 59679208328481)">Enter your gift message here</textarea>
</div>

<div class="itemCartContaine">
<input type="radio" name="BTN_GROUP_59679208328482" value="22334876:SHIP_TO_HOME:1" onclick="">
<input type="radio" name="BTN_GROUP_59679208328482" value="22334876:SHIP_TO_HOME:2" onclick="" checked="">
<input type="radio" name="BTN_GROUP_59679208328482" value="22334876:SHIP_TO_HOME:3" onclick="">
<textarea id="IncludeMessage2" name="TEXTAREA_59679208328482" onclick="" onkeyup="">Enter your gift message here2</textarea>
</div>
div;
preg_match_all('/name="([^\"]+)" value="([^\"]+)" onclick="" checked="">.+?<textarea[^>]+name="(.+?)"[^>]+>([^<]+)</is',$s,$m);
print_r($m);
Array ( [0] => Array ( [0] => name="BTN_GROUP_59679208328481" value="22334875:SHIP_TO_HOME:3" onclick="" checked=""> <textarea id="IncludeMessage" name="TEXTAREA_59679208328481" onclick="WALMART.checkout.shipping.giftMsgOnClick(this);" onkeyup="WALMART.checkout.shipping.giftMsgLimiter(this, 59679208328481)">Enter your gift message here< [1] => name="BTN_GROUP_59679208328482" value="22334876:SHIP_TO_HOME:2" onclick="" checked=""> <input type="radio" name="BTN_GROUP_59679208328482" value="22334876:SHIP_TO_HOME:3" onclick=""> <textarea id="IncludeMessage2" name="TEXTAREA_59679208328482" onclick="" onkeyup="">Enter your gift message here2< ) [1] => Array ( [0] => BTN_GROUP_59679208328481 [1] => BTN_GROUP_59679208328482 ) [2] => Array ( [0] => 22334875:SHIP_TO_HOME:3 [1] => 22334876:SHIP_TO_HOME:2 ) [3] => Array ( [0] => TEXTAREA_59679208328481 [1] => TEXTAREA_59679208328482 ) [4] => Array ( [0] => Enter your gift message here [1] => Enter your gift message here2 ) )
  • 打赏
  • 举报
回复
应该是2,6,10,16才是匹配需要的内容
  • 打赏
  • 举报
回复
上面得出的结果是:
[1] => Array
        (
            [0] => BTN_GROUP_59679208328481
            [1] => BTN_GROUP_59679208328482
        )

    [2] => Array
        (
            [0] => 22334875:SHIP_TO_HOME:1
            [1] => 22334876:SHIP_TO_HOME:1
        )

    [3] => Array
        (
            [0] => onclick=""
            [1] => onclick=""
        )

    [4] => Array
        (
            [0] => 

            [1] => 

        )

    [5] => Array
        (
            [0] => BTN_GROUP_59679208328481
            [1] => BTN_GROUP_59679208328482
        )

    [6] => Array
        (
            [0] => 22334875:SHIP_TO_HOME:2
            [1] => 22334876:SHIP_TO_HOME:2
        )

    [7] => Array
        (
            [0] => onclick=""
            [1] => onclick="" checked=""
        )

    [8] => Array
        (
            [0] => 

            [1] => 

        )

    [9] => Array
        (
            [0] => BTN_GROUP_59679208328481
            [1] => BTN_GROUP_59679208328482
        )

    [10] => Array
        (
            [0] => 22334875:SHIP_TO_HOME:3
            [1] => 22334876:SHIP_TO_HOME:3
        )

    [11] => Array
        (
            [0] => onclick="" checked=""
            [1] => onclick=""
        )

    [12] => Array
        (
            [0] => 

            [1] => 

        )

    [13] => Array
        (
            [0] => IncludeMessage
            [1] => IncludeMessage2
        )

    [14] => Array
        (
            [0] => TEXTAREA_59679208328481
            [1] => TEXTAREA_59679208328482
        )

    [15] => Array
        (
            [0] => onclick="WALMART.checkout.shipping.giftMsgOnClick(this);" onkeyup="WALMART.checkout.shipping.giftMsgLimiter(this, 59679208328481)"
            [1] => onclick="" onkeyup=""
        )

    [16] => Array
        (
            [0] => Enter your gift message here
            [1] => Enter your gift message here2
        )
然后再取下标2,5,8,16的就是结果了
  • 打赏
  • 举报
回复
$pattern='/<input type="radio" name="([^"]*?)" value="([^"]*?)" ([^>]*?)>(.*?)<input type="radio" name="([^"]*?)" value="([^"]*?)" ([^>]*?)>(.*?)<input type="radio" name="([^"]*?)" value="([^"]*?)" ([^>]*?)>(.*?)<textarea id="([^"]*?)" name="([^"]*?)" ([^>]*?)>([^<]*?)<\/textarea>/sm';
cluonani 2013-05-21
  • 打赏
  • 举报
回复
在线等...

21,882

社区成员

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

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