ホームページ >バックエンド開発 >PHPチュートリアル >正規表現を使用して複数の属性を持つ HTML タグを照合する方法

正規表現を使用して複数の属性を持つ HTML タグを照合する方法

WBOY
WBOYオリジナル
2016-06-23 14:01:401130ブラウズ

属性の順序が不明瞭なため、ルールのないさまざまなタグが存在します
56fe59ba45b4c2e0065f94132c407643
8f1b574f6114941efaa383c40c2e2e01

このようなものですが、属性の順序が異なるものは良いですid href クラスの属性値は数種類あり、それぞれ 1 2 3 に格納されます (タグ全体を指定の形式に置き換える必要があるため、preg_replace を使用します)

長い間考えていたのですが、この正規表現の書き方がわかりませんでした。専門家が助けてくれます

後処理属性を照合するために a8c064eeebde60c0c18494d3bfb71020]*)> を使用することも考えました。次に str_replace を使用してそれらを置き換えますが、この方法で検索を繰り返すと過剰なリソースのオーバーヘッドが発生する可能性があります。また、上記の要件を達成するにはどのような方法を使用できますか?専門家がお手伝いします


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

今後収集に通常のルールを使用する必要がないように、PHPqueryの使用方法を学ぶことをお勧めします

$s =<<< TXT<a id="home" href="/Home/index" class="btn"><a href="/Home/index" id="home" class="class"><a class="btn" href="/home" id="home">TXT;echo preg_replace_callback('/<a\s(.+)>/i', 'foo', $s);function foo($r) {  preg_match_all('/(\w+)="(.+?)"/', $r[0], $t);  $t = array_combine($t[1], $t[2]);  ksort($t);  $s = '';  foreach($t as $k=>$v) $s .= " $k='$v'";  return "<a$s>";}
6cde3b46c08bc1faa066c35d79e362ce

89435c96c88f86ed5b9546a8928ba625

ありがとうございます。試してみます。ただし、これはコレクション部分ではなく、テンプレートのコードの分離です。プロジェクトは大きくないので、小さなテンプレート エンジンを自分で実装してみてください

学習のためにコールバック関数を使用することもできることがわかりました。私が文書をよく読んでいなかったせいでもあります ありがとうございます