当前位置: 首页> 最新文章列表> 在 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