當前位置: 首頁> 最新文章列表> 在PHP 中使用stristr 從URL 中提取域名

在PHP 中使用stristr 從URL 中提取域名

gitbox 2025-09-08

在web 開發中,提取URL 中的域名是一個常見需求。 PHP 提供了很多函數來幫助我們操作字符串,其中stristr函數就可以用來提取和操作URL 中的域名。今天我們就來探討如何使用stristr來實現這一目標。

什麼是stristr函數?

stristr是PHP 中的一個字符串函數,它用於查找一個字符串首次出現的位置,並返回從該位置到字符串末尾的所有內容。與strpos不同的是, stristr會忽略大小寫,這對於處理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。

  • $needle :要搜索的子字符串,這裡我們會使用"://”,來幫助我們確定域名的開始位置。

  • $before_needle :可選參數,若設置為true ,則返回匹配到的部分之前的內容;若為false (默認),則返回匹配到的部分及其後面的內容。

如何從URL 中提取域名?

接下來,我們以從URL 中提取域名為例來介紹stristr的實際應用。假設我們有如下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">&lt;?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">?&gt;</span></span><span>
</span></span>

代碼解析

  1. stristr($url, '://') :首先我們用stristr查找:// ,它標誌著URL 中域名部分的開始。 stristr會返回從://後面的部分,如果找不到它會返回false

  2. substr($domain_part, 3, strpos($domain_part, '/') - 3) :在找到://後,我們通過substrstrpos截取域名部分。 substr://後的第三個字符開始截取,直到URL 中第一個/出現的位置。

  3. echo "域名是: " . $domain; :最後,輸出提取的域名。

注意事項

  1. URL 格式:我們假設輸入的URL 是合法的並且符合規範。如果URL 沒有://stristr就無法正常工作。因此在處理URL 時,最好先對其進行驗證或添加異常處理邏輯。

  2. 子域名問題:如果URL 包含子域名,比如blog.example.com ,上述代碼仍然可以正確提取完整的域名(包括子域名)。

  3. 不同的協議:如果URL 使用了不同的協議(例如http , https , ftp ), stristr同樣適用,因為它忽略了大小寫。

總結

使用stristr函數從URL 中提取域名是一個簡單且高效的方法。通過組合stristrsubstr ,我們能夠輕鬆地定位域名部分並提取出我們需要的信息。在實際開發中,這個方法非常適合處理包含路徑和查詢參數的URL,同時確保對大小寫的忽略。

  • 相關標籤:

    URL