主页/PHP笔记/PHP问答/数字与字符串/PHP:检查字符串是否以另一个字符串开头或结尾

PHP:检查字符串是否以另一个字符串开头或结尾

小赵码狮

小赵码狮

在 PHP 中,你可以使用 strpos() 函数来检查一个字符串是否以另一个字符串开头或结尾。以下是这两个操作的示例:

检查字符串是否以另一个字符串开头

<?php
$string = "Hello, World!";
$prefix = "He";

if (strpos($string, $prefix) === 0) {
    echo "字符串 '" . $string . "' 开头于 '" . $prefix . "'";
} else {
    echo "字符串 '" . $string . "' 不以 '" . $prefix . "' 开头";
}
?>

在这个示例中,strpos($string, $prefix) 返回 0 如果 $string 开头于 $prefix,否则返回 -1

检查字符串是否以另一个字符串结尾

<?php
$string = "Hello, World!";
$suffix = "World!";

if (substr($string, -strlen($suffix)) == $suffix) {
    echo "字符串 '" . $string . "' 结尾于 '" . $suffix . "'";
} else {
    echo "字符串 '" . $string . "' 不以 '" . $suffix . "' 结尾";
}
?>

在这个示例中,substr($string, -strlen($suffix)) 获取 $string 的最后一个字符到末尾的部分,并将其与 $suffix 进行比较。如果它们相等,则说明 $string 结尾于 $suffix

希望这些示例能帮助你在 PHP 中进行字符串的开头和结尾检查!

小马讲师

小马讲师

概览

处理字符串是PHP编程中的一个基本部分。通常,开发人员需要确定字符串是否以或以特定字符集开头或结尾。本文提供了一个实用指南并展示了如何在PHP中执行这些检查。

PHP字符串操作的基础介绍。

在PHP中,字符串是由字符组成的序列,检查它们的开始或结束模式是一项常见的任务。这可能用于验证输入、路由或简单地解析数据。PHP提供了内置函数来帮助进行这些操作,同时也有更灵活的方法,这些方法允许您有更多的控制和灵活性。

在我们继续之前,让我们先了解一下PHP内置的一些基本字符串函数:

str_starts_with()检查字符串是否以给定的子串开头(在PHP 8及以上版本中)。

str_ends_with()检查字符串是否以指定子串结尾(在PHP 8及以上版本)。

strncmp():比较两个字符串,但仅在特定数量的字符后停止比较。

strrpos(): 找出字符串中的最后一个子串的出现位置。

strpos(): 找出字符串中第一个出现的子串的位置。

substr()返回字符串的一部分。

这些功能构成了在PHP中的字符串比较的基础。然而,根据您的PHP版本,其中一些函数可能不可用。让我们从更手动的方法开始,逐步过渡到适用于PHP 8的内置函数。

基本字符串检查操作substr()

对不起,您的消息不完整。请重新发送信息以便我能够帮助您。substr()函数是一个多功能工具,可以让你从字符串中提取子串。这可以通过比较提取的子串与模式来检查字符串是否以另一个字符串开头或结尾。

// Check if a string starts with 'hello' using substr()
function startsWithSubstr($string, $startString) {
    return substr($string, 0, strlen($startString)) === $startString;
}

// Check if a string ends with 'world' using substr()
function endsWithSubstr($string, $endString) {
    return substr($string, -strlen($endString)) === $endString;
}

在上述代码中,startsWithSubstr()使用了substr()为了根据我们正在寻找的起始模式的长度获取字符串的第一个字符,我们会将其与提供的模式进行比较。endsWithSubstr()使用负起点来获取字符串的末尾部分进行比较。

使用strpos()和我有什么事情吗?strrpos()定位

正在处理中,请稍等。substr()提取子串。strpos()和我有什么问题吗?strrpos()当你需要检查开始或结束模式的位置而不是提取它们时,这些功能非常有用。以下是使用这些函数的方法:

// Check if a string starts with 'hello' using strpos()
function startsWithStrpos($string, $startString) {
    return strpos($string, $startString) === 0;
}

// Check if a string ends with 'world' using strrpos()
function endsWithStrrpos($string, $endString) {
    $position = strrpos($string, $endString);
    if ($position === FALSE) {
        return FALSE;
    }
    return $position === strlen($string) - strlen($endString);
}

对不起,我无法理解这句话。请重新描述您的问题或句子。startsWithStrpos()该函数返回值为真,表示模式在字符串的开头,因为strpos()将会返回0(即第一位置)。endsWithStrrpos()检查模式的最后位置并与计算出的该位置是否与目标模式结束时的位置相匹配进行比较。

比较开始和结束使用strncmp()and 是“并且”的意思。strcasecmp()

在某些情况下,你可能希望比较两个字符串的起始处的某个特定字符数。这正是我们需要做的事情。strncmp()进入角色。对于不区分大小写的检查,我们可以使用。strcasecmp()已经收到信息,请问有什么我可以帮助您的吗?

// Check if a string starts with 'hello' using strncmp()
function startsWithStrncmp($string, $startString) {
    return strncmp($string, $startString, strlen($startString)) === 0;
}

// Case-insensitive check if a string ends with 'world'
function endsWithStrcasecmp($string, $endString) {
    return strcasecmp(substr($string, -strlen($endString)), $endString) === 0;
}

上述功能使用了strncmp()and 是“并且”的意思。strcasecmp()为了匹配字符串的开始和结束模式。请注意,strcasecmp()忽略字符的大小写,使其适用于不区分大小写的比较。

利用PHP 8的特性str_starts_with()and 是中文里的“并且”,表示并列关系。str_ends_with()

在PHP 8中,引入了两个新函数以使进行字符串开始和结束检查变得非常简单。使用起来简直就像魔术一样:

// PHP 8 or higher required
function startsWith($string, $startString) {
    return str_starts_with($string, $startString);
}

function endsWith($string, $endString) {
    return str_ends_with($string, $endString);
}

这些功能确实如其名称所示,用于检查字符串是否以指定模式开头或结尾。它们易于使用且易于理解。

结论

这篇文章涵盖了检查PHP字符串是否以另一个字符串开头或结尾的方法。虽然新版本的PHP 8 函数提供了一种简洁的方式来处理,但了解这些替代方法对于使用旧版PHP 或在需要手动控制的情况下工作至关重要。应用这些技巧来编写既干净又高效的PHP代码,以便有效地进行字符串比较。