Web開発では、URLでドメイン名を抽出することは一般的な要件です。 PHPは、文字列を操作するのに役立つ多くの機能を提供し、 STRSTR関数を使用してURLのドメイン名を抽出および操作できます。今日は、この目標を達成するためにStristrを使用する方法について説明します。
Strristrは、PHPの文字列関数であり、文字列が最初に表示され、その場所から文字列の端まですべてを返す場所を見つけます。 STRPOSとは異なり、 STRPOSはケースを無視します。これは、ほとんどの場合、ドメイン名がケースに感受性がないため、URLのドメイン名を処理するのに特に便利です。
<span><span><span class="hljs-title function_ invoke__">stristr</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$needle</span></span><span>, </span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-variable">$before_needle</span></span><span> = </span><span><span class="hljs-literal">false</span></span><span>): </span><span><span class="hljs-keyword">string</span></span><span>|</span><span><span class="hljs-literal">false</span></span><span>
</span></span>
$ haystack :ターゲット文字列、通常は情報を抽出するURLです。
$針:検索するサブストリング、ここでは「://」を使用して、ドメイン名の開始位置を決定するのに役立ちます。
$ before_needle :オプションパラメーター。 trueに設定した場合、一致した部分の前にコンテンツを返します。 false (デフォルト)の場合、一致する部分とその後のコンテンツを返します。
次に、例としてURLからドメイン名を抽出することにより、 Strristの実際のアプリケーションを導入します。次のURLがあるとします。
<span><span><span class="hljs-variable">$url</span></span><span> = </span><span><span class="hljs-string">"https://www.example.com/path/to/page?query=123"</span></span><span>;
</span></span>
このURLからドメイン名パーツ、つまりwww.example.comを抽出したいと思います。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$url</span></span><span> = </span><span><span class="hljs-string">"https://www.example.com/path/to/page?query=123"</span></span><span>;
</span><span><span class="hljs-comment">// 使用 stristr 探す '://' 後者の部分</span></span><span>
</span><span><span class="hljs-variable">$domain_part</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stristr</span></span><span>(</span><span><span class="hljs-variable">$url</span></span><span>, </span><span><span class="hljs-string">'://'</span></span><span>);
</span><span><span class="hljs-comment">// 見つかった場合,取り除く '://' とパス部分</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$domain_part</span></span><span> !== </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-comment">// 取り除く '://' 最初のものを傍受します '/' 前の部分</span></span><span>
</span><span><span class="hljs-variable">$domain</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$domain_part</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-title function_ invoke__">strpos</span></span><span>(</span><span><span class="hljs-variable">$domain_part</span></span><span>, </span><span><span class="hljs-string">'/'</span></span><span>) - </span><span><span class="hljs-number">3</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ドメイン名はです: "</span></span><span> . </span><span><span class="hljs-variable">$domain</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"URL 無効な形式"</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
strristr($ url、 '://') :最初にstrristrを使用して://を使用します。 Strristは次のセクションから以下の後に部分を返し、それが見つからない場合は虚偽を返します。
substr($ domain_part、3、strpos($ domain_part、 '/')-3) : subsとstrposを介してドメイン名部分を傍受した後、 substrは、最初の//がURLに表示されるまで、3番目の文字をインターセプトし始めます。
エコー「ドメイン名は:」です。 $ domain; :最後に、抽出されたドメイン名を出力します。
URL形式:入力されたURLは合法であり、仕様に準拠していると想定しています。 URLに://がない場合、 Strristrは適切に機能しません。したがって、URLを処理するときは、最初にそれらを確認するか、例外処理ロジックを追加することが最善です。
サブドメイン名の問題:URLにblog.example.comなどのサブドメイン名が含まれている場合、上記のコードは完全なドメイン名(サブドメイン名を含む)を正しく抽出できます。
異なるプロトコル:URLが異なるプロトコル( HTTP 、 HTTPS 、 FTPなど)を使用している場合、 STRRISTもケースを無視するために適用されます。
Strrist関数を使用してURLSからドメイン名を抽出することは、これを行うための簡単で効率的な方法です。 StrristrとSubstrを組み合わせることで、ドメイン名の部分を簡単に見つけて、必要な情報を抽出できます。実際の開発では、この方法は、パスとクエリパラメーターを含むURLを処理し、ケースの無知を確保するのに非常に適しています。
関連タグ:
URL