• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

遇到正则难题,请高手指点

php 搞代码 3年前 (2022-01-23) 21次浏览 已收录 0个评论
文章目录[隐藏]

大家好,我正在做正则匹配,想把以下属性名称(如颜色分类和套餐类型)和属性值(白色,黑色,套餐一,套餐二,套餐三)抽取出来,我的做法是先把每个

中间的内容通过正则匹配出来,然后用程序再把 里面的

属性名称

属性值匹配出来,但是第一步就测试失败:/<dl class=\"J_Prop(?P.*)<\/dl> 我用的是这个样的正则匹配每个

,但是一直弄不好,请高手指点,谢谢。

颜色分类

  • 白色

    已选中

  • 黑色

    已选中

套餐类型

  • 套餐一

    已选中

  • 套餐二

    已选中

  • 套餐三

    已选中

回复讨论(解决方案)

//自己到网上下一个include('simple_html_dom.php');$dom=new simple_html_dom();$dom->load($s);//$s 就是你的html$dls=$dom->find('dl');$res=array();foreach($dls as $k=>$dl){	$res[$k]['type']=$dl->find('dt')[0]->text();	foreach($dl->find('li') as $k1=>$li){		$res[$k][] = $li->find('span')[0]->text();	}}echo "<pre class="prettyprint linenums">";print_r($res);echo "

“;/*Array( [0] => Array ( [type] => 颜色分类 [0] => 白色 [1] => 黑色 ) [1] => Array ( [type] => 套餐类型 [0] => 套餐一 [1] => 套餐二 [2] => 套餐三 ))*/

$s =<<< HTML<dl class="J_Prop tb-prop tb-clear  J_Prop_Color ">        <dt class="tb-property-type">颜色分类</dt>        <dd>            <ul class="J_TSaleProp tb-img tb-clearfix">                <li class="tb-txt">                                                            <span>白色</span>                                                        <i>已选<span>!本文来源gaodai#ma#com搞*!代#%^码网5</span><pre>搞gaodaima代码

  • 黑色 已选中
  • 套餐类型
    • 套餐一 已选中
    • 套餐二 已选中
    • 套餐三 已选中

    HTML;preg_match_all(‘#

    (.+?)

    #is’, $s, $m);foreach($m[1] as $i=>$v) { preg_match_all(‘#(.+)#isU’, $v, $m); $r[$i] = $m[2];}print_r($r);

    Array(    [0] => Array        (            [0] => 颜色分类            [1] => 白色            [2] => 黑色        )    [1] => Array        (            [0] => 套餐类型            [1] => 套餐一            [2] => 套餐二            [3] => 套餐三        ))

    搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
    转载请注明原文链接:遇到正则难题,请高手指点

    喜欢 (0)
    [搞代码]
    分享 (0)
    发表我的评论
    取消评论

    表情 贴图 加粗 删除线 居中 斜体 签到

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址