我有一个包含类似ab_123456789
如何检查变量是否以ab_
开头?
感谢, 塞巴斯蒂安
答案 0 :(得分:22)
使用substr
的另一种方式:
if (substr('ab_123456789', 0, 3) === 'ab_')
此处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;
}
}
请注意,这些函数不支持多字节字符,因为只比较字节。具有多字节支持的等效函数可能如下所示:
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);
}
}
这里假设两个字符串的字符编码都是internal character encoding。
答案 1 :(得分:6)
使用正则表达式
$var = "ab_123456789";
if(preg_match('/^ab_/', $var, $matches)){
/*your code here*/
}
答案 2 :(得分:6)
您可以使用strpos()
:
$text = "ab_123456789";
if(strpos($text, "ab_") === 0)
{
// Passed the test
}
答案 3 :(得分:1)
这很简单,因为你的字符串可以像一个字符数组一样被访问。所以你只需要做一些事情:
if ($var[0] == "a" && $var[1] == "b" && $var[2] == "c")
return true
你也可以使用php库中的find函数。
答案 4 :(得分:1)
最简单的方法是获取子字符串。例如substr('ab_123456789', 0, 3);