<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// コードのこの部分は、記事の内容とは何の関係もありません,たとえば、デモンストレーション</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"スクリプトの実行を開始します...\n"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
<h2>strip_tags そして preg_replace 一緒に使用する場合,カスタムタグのフィルタリングと処理を実装する方法?</h2>
<p>存在するPHP真ん中,対処するHTML文字列の場合,经常需要对其真ん中的标签进行过滤或替换。<code></span><span><span class="hljs-title function_ invoke__">strip_tags</span></span><span>()
例からわかるように、<strong>タグのみが保持され、他のタグが削除されます。
preg_replaceは正規表現をサポートします。これは、複雑なタグ形式を一致させ、タグ内の属性を処理するために使用できます。例えば:
</span><span><span class="hljs-variable">$html</span></span><span> = </span><span><span class="hljs-string">"<p class='intro'>サンプルテキスト</p>"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_replace</span></span><span>(</span><span><span class="hljs-string">'/<p[^>]*>/i'</span></span><span>, </span><span><span class="hljs-string">'<div class="new-intro">'</span></span><span>, </span><span><span class="hljs-variable">$html</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$result</span></span><span>;
</span><span><span class="hljs-comment">// 出力:<div class="new-intro">サンプルテキスト</p></span></span><span>
ここでは、すべての属性<p>タグを新しいクラス& ltに置き換えるために通常のものを使用します。 div & gt ;タグ。 P > <H3> III 。 Strip_Tagとpreg_replaceを組み合わせて、カスタムタグフィルタリングと処理を実装する H3 > <p> Strip_Tagsには単純な機能があり、タグの属性を判断することは不可能であり、タグのコンテンツに対処することも複雑ではありません。 preg_replaceと組み合わせて、まずカスタムタグを標準タグとしてRegularityに置き換えるか、属性調整を行い、次にStrip_Tagsを使用して非安定タグをフィルタリングできます。 p > <p>例:& ltのみを維持したい。 b & gt ;そして& lt ; a & gt ;タグですが、カスタムタグ& ltを変換する必要があります。 mytag & gt ; to& lt ; span & gt ;そして、 & lt ;のHREF属性のみa & gt ;タグ。 p > <pre> <code> $ html = "これは& lt ; mytag & gt ; custom tag& lt ;/ mytag & gt ;、&& lt ; a a href = ' http ://例。 com ' title =' title '& gt ; link& lt ;/ a & gt ;そして& lt ; b & gt ;大胆な& ; / b & gt ;。 "; //ステップ1: mytag & gt ; span & gt ; $ html = preg_replace (['/& lt ; \/? mytag & gt ; / i ']、[ function ($ matches ) { return return str_ireplace ([ 'mytag' 、 '/mytag' ]、[ 'span' 、 '/span' ]、 $ mates [ 0 ]); }]、 $ html ); //ステップ2:<a>タグの非href属性を除外します $ html = preg_replace_callback ( '/<a \ s+([^>]*)>/i' 、function( $ matches ){ // href属性のみを保持する if ( preg_match ( '/href \ s*= \ s*["\']?([^" \ '> \ s]+)["\']?/i ' 、 $ matches [ 1 ]、 $ hrefmatch )){ return ' <a href = "'。$ hrefmatch [1]。 '"> ' ; }戻る '<a>' ; }、 $ html ); //ステップ3:STRIP_TAGSを使用して、指定されたタグを保持します $ result = strip_tags ( $ html 、 '<b> <a> <span>' );エコー $ result ;このようにして、元の<mytag>は<Span>に置き換えられ、<a>タグはHREF属性のみを保持し、<b>、<a>、<Span>タグのみを全体として保持することができ、他のタグは削除されます。
正規表現の合理的な設計と要件に応じたフィルタリングロジックは、カスタムラベルのフィルタリングと処理を実装するための鍵です。