如何检查变量中的前三个字符?

seb*_*ian 8 php

我有一个包含这样的东西的变量 ab_123456789

我如何检查变量是否以ab_

谢谢,塞巴斯蒂安

Gum*_*mbo 24

另一种使用方式substr:

if (substr('ab_123456789', 0, 3) === 'ab_')
Run Code Online (Sandbox Code Playgroud)

这里substr用于从位置0开始的前3个字节作为字符串,然后进行比较'ab_'.如果要添加不区分大小写,请使用strcasecmp.


编辑     为了使用更舒适,您可以使用以下startsWith功能:

function startsWith($str, $prefix, $case_sensitivity=false) {
    if ($case_sensitivity) {
        return substr($str, 0, strlen($prefix)) === $prefix;
    } else {
        return strcasecmp(substr($str, 0, strlen($prefix)), $prefix) === 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,这些函数不支持多字节字符,因为只比较字节.具有多字节支持的等效函数可能如下所示:

function mb_startsWith($str, $prefix, $case_sensitivity=false) {
    if ($case_sensitivity) {
        return mb_substr($str, 0, mb_strlen($prefix)) === $prefix;
    } else {
        return mb_strtolower(mb_substr($str, 0, mb_strlen($prefix))) === mb_strtolower($prefix);
    }
}
Run Code Online (Sandbox Code Playgroud)

这里假设两个字符串的字符编码是内部字符编码.


cyp*_*her 7

使用正则表达式

$var = "ab_123456789";
if(preg_match('/^ab_/', $var, $matches)){
    /*your code here*/
}
Run Code Online (Sandbox Code Playgroud)


In *_*ico 6

你可以使用strpos():

$text = "ab_123456789";
if(strpos($text, "ab_") === 0)
{
    // Passed the test
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,`strpos`将搜索,直到找到匹配或到达字符串的结尾. (3认同)