当前位置: 首页> 最新文章列表> 如何使用 stristr 和 strlen 获取匹配字符串的长度?

如何使用 stristr 和 strlen 获取匹配字符串的长度?

gitbox 2025-09-22

在 PHP 中,stristrstrlen 是常用的字符串处理函数,它们分别用于查找字符串的匹配部分和计算字符串的长度。通过合理地组合这两个函数,我们可以很方便地实现获取某个匹配字符串的长度。本文将详细介绍如何使用这两个函数来获取匹配字符串的长度。

一、stristr 函数的作用

stristr 函数用于查找一个字符串在另一个字符串中首次出现的位置,并返回从该位置开始到字符串结束的部分。该函数是区分大小写的,且返回的匹配部分包含了原字符串中的匹配内容。基本语法如下:

<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:要搜索的目标字符串。

  • $needle:要查找的子字符串。

  • $before_needle:如果设置为 true,则返回从开始到匹配子串前的位置的字符串。

stristr 会返回匹配的子串,如果没有找到则返回 false

二、strlen 函数的作用

strlen 函数用于计算一个字符串的长度。它返回的是字符串中的字符数,忽略了字符的编码类型。其基本语法如下:

<span><span><span class="hljs-title function_ invoke__">strlen</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$string</span></span><span>): </span><span><span class="hljs-keyword">int</span></span><span>
</span></span>
  • $string:待计算长度的字符串。

三、结合 stristrstrlen 获取匹配字符串的长度

当我们需要查找某个子字符串并获取该匹配部分的长度时,可以将 stristrstrlen 结合使用。具体步骤如下:

  1. 使用 stristr 查找目标字符串中首次匹配子串的位置。

  2. 使用 strlen 计算匹配字符串的长度。

示例代码

假设我们有一个字符串 $haystack,我们要查找子字符串 $needle 并计算其匹配部分的长度,代码如下:

<span><span><span class="hljs-meta">&lt;?php</span></span><span>

</span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"PHP is a popular general-purpose scripting language."</span></span><span>;
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-string">"popular"</span></span><span>;

</span><span><span class="hljs-comment">// 使用 stristr 查找匹配的子字符串</span></span><span>
</span><span><span class="hljs-variable">$match</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stristr</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-variable">$needle</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">$match</span></span><span> !== </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-comment">// 使用 strlen 计算匹配部分的长度</span></span><span>
    </span><span><span class="hljs-variable">$length</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strlen</span></span><span>(</span><span><span class="hljs-variable">$match</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">$length</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">"没有找到匹配的子字符串。"</span></span><span>;
}

</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

四、解析代码

  1. 我们首先定义了两个变量 $haystack$needle,分别表示目标字符串和需要查找的子字符串。

  2. 使用 stristr 查找 $haystack 中首次出现 $needle 的位置,并将匹配部分保存到 $match 变量中。如果找到匹配部分,stristr 会返回从匹配位置到字符串末尾的部分。

  3. 如果找到了匹配部分,则使用 strlen 计算该匹配部分的长度。

  4. 最后,输出匹配字符串的长度。

五、输出结果

假设我们的 $haystack 是 "PHP is a popular general-purpose scripting language.",而 $needle 是 "popular",运行以上代码会输出:

<span><span><span class="hljs-section">匹配字符串的长度是: 8</span></span><span>
</span></span>

这是因为 "popular" 是匹配的子串,且其长度为 8。

六、注意事项

  • stristr 返回的匹配部分包含了匹配的子串及其后面的所有内容,因此如果我们只关心匹配子串本身的长度,使用 strlen 即可。

  • 如果我们希望在匹配到子串之前停止查找,可以使用 stristr 的第三个参数 $before_needle,将其设置为 true,这时返回的字符串仅包含子串之前的部分。

总结

通过结合使用 stristrstrlen,我们可以轻松地查找匹配字符串并计算其长度。这在许多场景中非常有用,尤其是在字符串处理和数据提取的任务中。希望本文的示例能够帮助你更好地理解这两个函数的使用方法。