ホームページ >バックエンド開発 >PHPチュートリアル >定期的に問題が発生する場合は、専門家に指示を求めてください。
皆さん、こんにちは。私は通常のマッチングを行っており、次の属性名(色の分類やパッケージの種類など)と属性値(白、黒、パッケージ 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] => 套餐三 ))