ホームページ >バックエンド開発 >PHPチュートリアル >定期的に問題が発生する場合は、専門家に指示を求めてください。

定期的に問題が発生する場合は、専門家に指示を求めてください。

WBOY
WBOYオリジナル
2016-06-23 13:21:171007ブラウズ

皆さん、こんにちは。私は通常のマッチングを行っており、次の属性名(色の分類やパッケージの種類など)と属性値(白、黒、パッケージ 1、パッケージ 2、パッケージ 3)を抽出したいと考えています。私のアプローチは次のとおりです。各 d378eb4b5dc33be53cb127071978e63ecd324b2387ec29e44e8e788c60648872 の中央にあるコンテンツが通常のルールによって照合され、その後、プログラムが 1c9083522324ed67ca80ed090a8cfe96属性名c72c1af5e0e7f90179c047c5ef85885eと45a2772a6b6107b401db3c9b82c049c2属性値54bdf357c58b8a65c66d7c19c8e4d114は一致しますが、最初のステップでテストが失敗します:/7ea8d4bbdabfd0e46c1d4451be0120d9.*) cd324b2387ec29e44e8e788c60648872 この正規表現を使用して各 d378eb4b5dc33be53cb127071978e63ecd324b2387ec29e44e8e788c60648872 を一致させることはできませんでした。アドバイスをお願いします
d378eb4b5dc33be53cb127071978e63e class="tb-property-type">
a6034f231cc9ed5fb0d0e4e3d3065761 「JavaScript: void (0); & gt;」 /span & gt;
& lt; li data-value="1627207:28327" > 82e295699cff932a4d4dabba39074c35
cd324b2387ec29e44e8e788c60648872
b0a500804b5620ab05ddf7680190e468 -type ">パッケージタイプ</dt>
" "< dd>" "clearfix">                           45a2772a6b6107b401db3c9b82c049c2套餐一54bdf357c58b8a65c66d7c19c8e4d114
                      5db79b134e9f6b82c0b36e0489ee08ed
                      5a8028ccc7a7e27417bff9f05adf5932已选中72ac96585ae54b6ae11f849d2649d9e6
                bed06894275b65c1ab86501b08a632eb                    
                623e8c033bf5c0ef366ea2f5a5c617c6
                            bf105d2543d3b6e2565ed52cc2866d3d
                                45a2772a6b6107b401db3c9b82c049c2套餐二54bdf357c58b8a65c66d7c19c8e4d114
                            5db79b134e9f6b82c0b36e0489ee08ed
                            5a8028ccc7a7e27417bff9f05adf5932已选中72ac96585ae54b6ae11f849d2649d9e6
                bed06894275b65c1ab86501b08a632eb                    
                19d1018bb35d0e2d02e1a0aacaaa8b74
                      bf105d2543d3b6e2565ed52cc2866d3d
                           45a2772a6b6107b401db3c9b82c049c2套餐三54bdf357c58b8a65c66d7c19c8e4d114
                      5db79b134e9f6b82c0b36e0489ee08ed
                      5a8028ccc7a7e27417bff9f05adf5932已选中72ac96585ae54b6ae11f849d2649d9e6
                bed06894275b65c1ab86501b08a632eb
            929d1f5ca49e04fdcb27f9465b944689
        82e295699cff932a4d4dabba39074c35
cd324b2387ec29e44e8e788c60648872   


回复讨论(解决方案)

//自己到网上下一个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="brush:php;toolbar:false">";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 data-property="颜色分类" class="J_TSaleProp tb-img tb-clearfix">                <li data-value="1627207:3232483" class="tb-txt">                            <a href="javascript:void(0);">                                <span>白色</span>                            </a>                            <i>已选中</i>               </li>       <li data-value="1627207:28327" class="tb-txt">                            <a href="javascript:void(0);">                                <span>黑色</span>                            </a>                            <i>已选中</i>               </li>            </ul>        </dd></dl>  <dl class="J_Prop tb-prop tb-clear ">        <dt class="tb-property-type">套餐类型</dt>        <dd>            <ul data-property="套餐类型" class="J_TSaleProp tb-clearfix">                <li data-value="5919063:3266781">                      <a href="javascript:void(0);">                           <span>套餐一</span>                      </a>                      <i>已选中</i>                </li>                                    <li data-value="5919063:3266779">                            <a href="javascript:void(0);">                                <span>套餐二</span>                            </a>                            <i>已选中</i>                </li>                                    <li data-value="5919063:3266785">                      <a href="javascript:void(0);">                           <span>套餐三</span>                      </a>                      <i>已选中</i>                </li>            </ul>        </dd></dl>   HTML;preg_match_all('#<dl class="J_Prop tb-prop tb-clear.*?>(.+?)</dl>#is', $s, $m);foreach($m[1] as $i=>$v) {  preg_match_all('#<(dt|span).*>(.+)</\1>#isU', $v, $m);  $r[$i] = $m[2];}print_r($r);
Array(    [0] => Array        (            [0] => 颜色分类            [1] => 白色            [2] => 黑色        )    [1] => Array        (            [0] => 套餐类型            [1] => 套餐一            [2] => 套餐二            [3] => 套餐三        ))

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。