ホームページ > バックエンド開発 > PHPチュートリアル > HTML リストからデータを抽出するために正規表現を使用するように PHP に要求する

HTML リストからデータを抽出するために正規表現を使用するように PHP に要求する

WBOY
リリース: 2016-06-23 14:14:13
オリジナル
1014 人が閲覧しました

すごいです

PHP 初心者
通常の PHP を使用して、javascript:Detail('R2013031500000871','671529939')" の 2 つのパラメータと td の値を抽出してください。
tr は 1 行で、配列、ありがとうございます


ディスカッションへの返信 (解決策)

<tbody id="pres_table_body" >		<tr class="odd "  onclick="EXTableUtil.selectRow(this,'pres');"  onmouseover="EXTableUtil.lightRow(this,'pres');"  onmouseout="EXTableUtil.unlightRow(this,'pres');"   ><td width="40%"   align="left">成都电子商务有限公司</td><td width="10%"   align="center">杨发</td><td width="20%"   align="center">51012200012484</td><td width="20%"   align="center">73770103</td><td width="10%"   align="center">								<a href="javascript:Detail('R2012121400045944','75203619')"><img src="/resource/website/images/sButton_xiangxi.gif" align="absbottom"/></a> 		        <a href="javascript:ViewFD('杨发','75203619')"><img src="/resource/website/images/sButton_ckglqy.gif" align="absbottom"/></a>		   </td></tr>	  		<tr class="even "  onclick="EXTableUtil.selectRow(this,'pres');"  onmouseover="EXTableUtil.lightRow(this,'pres');"  onmouseout="EXTableUtil.unlightRow(this,'pres');"   ><td width="40%"   align="left">成都科技术有限公司</td><td width="10%"   align="center">黄灿发</td><td width="20%"   align="center">51104000170767</td><td width="20%"   align="center">66531815</td><td width="10%"   align="center">								<a href="javascript:Detail('R2013031500000871','671529939')"><img src="/resource/website/images/sButton_xiangxi.gif" align="absbottom"/></a> 		        <a href="javascript:ViewFD('黄灿发','671529939')"><img src="/resource/website/images/sButton_ckglqy.gif" align="absbottom"/></a>		   </td></tr>	  	</tbody>
ログイン後にコピー

ああ、印刷パラメータが 1 つ減りました
preg_match_all('/ print_r($ar[1]); //パラメータ 1
print_r($ar[2]); //パラメータ 2

ああ
preg_match_all('/

$s=<<<txt<tbody id="pres_table_body" >        <tr class="odd "  onclick="EXTableUtil.selectRow(this,'pres');"  onmouseover="EXTableUtil.lightRow(this,'pres');"  onmouseout="EXTableUtil.unlightRow(this,'pres');"   ><td width="40%"   align="left">成都电子商务有限公司</td><td width="10%"   align="center">杨发</td><td width="20%"   align="center">51012200012484</td><td width="20%"   align="center">73770103</td><td width="10%"   align="center">                                 <a href="javascript:Detail('R2012121400045944','75203619')"><img src="/resource/website/images/sButton_xiangxi.gif" align="absbottom"/></a>                 <a href="javascript:ViewFD('杨发','75203619')"><img src="/resource/website/images/sButton_ckglqy.gif" align="absbottom"/></a>           </td></tr>               <tr class="even "  onclick="EXTableUtil.selectRow(this,'pres');"  onmouseover="EXTableUtil.lightRow(this,'pres');"  onmouseout="EXTableUtil.unlightRow(this,'pres');"   ><td width="40%"   align="left">成都科技术有限公司</td><td width="10%"   align="center">黄灿发</td><td width="20%"   align="center">51104000170767</td><td width="20%"   align="center">66531815</td><td width="10%"   align="center">                                 <a href="javascript:Detail('R2013031500000871','671529939')"><img src="/resource/website/images/sButton_xiangxi.gif" align="absbottom"/></a>                 <a href="javascript:ViewFD('黄灿发','671529939')"><img src="/resource/website/images/sButton_ckglqy.gif" align="absbottom"/></a>           </td></tr>           </tbody>txt;preg_match_all('/<td[^>]+>(.+)<\/td>/sU',$s,$m);print_r($m[1]);  //td的值preg_match_all('/<a href="javascript:Detail\(\'(.+)\',\'(.+)\'\)"/sU',$s,$ar);print_r($ar[1]);  //参数


preg_match_all('/<tr[^>]+>\s*<td[^>]+>(.+)<\/td>\s*<td[^>]+>(.+)<\/td>\s*<td[^>]+>(.+)<\/td>\s*<td[^>]+>(.+)<\/td>\s*<td[^>]+>(.+)<\/td>\s*<\/tr>/sU',$s,$m,PREG_SET_ORDER);print_r($m);
ログイン後にコピー
ログイン後にコピー

最後の質問ですが、javascript:Detail('R2013031500000871','671529939') で R2013031500000871 を取得したいのですが、 6 の書き方71529939

#1 2 番目の返信、ありませんか?


#1 2 番目の返信、ありませんか?

つまり、1 回のマッチングで、再度マッチングする必要はありません。通常の 2 回だけです。表現をブレンドしました

結果がこのようになるまで待ちます 完璧


preg_match_all('/<tr[^>]+>\s*<td[^>]+>(.+)<\/td>\s*<td[^>]+>(.+)<\/td>\s*<td[^>]+>(.+)<\/td>\s*<td[^>]+>(.+)<\/td>\s*<td[^>]+>(.+)<\/td>\s*<\/tr>/sU',$s,$m,PREG_SET_ORDER);print_r($m);
ログイン後にコピー
ログイン後にコピー


preg_match_all('/]+>s*]+>(.+ )s*]+>(.+)s*]+>(.+) s*]+>(.+)s*]+>(s*
.+)s*/sU',$s,$m,PREG_SET_ORDER);
print_r($m);

こんな感じですか?
preg_match_all('/]+>s*]+>(.+)s*]+> ;(.+)s*]+>(.+)s*]+>(.+)< ;/td>s*]+>s*
.+< /td>s*/sU',$s,$m,PREG_SET_ORDER);

こんな感じですか?
preg_match_all('/]+>s*]+>(.+)s*]+> ;(.+)s*]+>(.+)s*]+>(.+)< ;/td>s*]+>s*
.+< /td>s*/sU',$s,$m,PREG_SET_ORDER);

以上でポイントが付与されます、ありがとうございます!

正規表現のテストに使用したツールは何ですか? テストには Match Tracer と Expresso を使用しました。最後の /sU は何を意味しますか?
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート