我有一个看起来像这样的字符串:
$str = "bla_string_bla_bla_bla";
Run Code Online (Sandbox Code Playgroud)
我怎样才能删除第一个bla_; 但只有在字符串的开头找到它?
随着str_replace(),它删除了所有 bla_的.
Fab*_*ora 315
普通形式,没有正则表达式:
$prefix = 'bla_';
$str = 'bla_string_bla_bla_bla';
if (substr($str, 0, strlen($prefix)) == $prefix) {
$str = substr($str, strlen($prefix));
}
Run Code Online (Sandbox Code Playgroud)
需要:0.0369毫秒(0.000,036,954秒)
与:
$prefix = 'bla_';
$str = 'bla_string_bla_bla_bla';
$str = preg_replace('/^' . preg_quote($prefix, '/') . '/', '', $str);
Run Code Online (Sandbox Code Playgroud)
注意到:0.1749毫秒(0.000,174,999秒)第一次运行(编译),和0.0510毫秒(0.000,051,021秒)之后.
显然,在我的服务器上描述.
Tat*_*nen 54
您可以使用带有插入符号(^)的正则表达式,它将匹配锚定到字符串的开头:
$str = preg_replace('/^bla_/', '', $str);
Run Code Online (Sandbox Code Playgroud)
Pav*_*vel 17
function remove_prefix($text, $prefix) {
if(0 === strpos($text, $prefix))
$text = substr($text, strlen($prefix)).'';
return $text;
}
Run Code Online (Sandbox Code Playgroud)
小智 14
在 PHP 8+ 中,我们可以简化使用该str_starts_with()函数:
$str = "bla_string_bla_bla_bla";
$prefix = "bla_";
if (str_starts_with($str, $prefix)) {
$str = substr($str, strlen($prefix));
}
Run Code Online (Sandbox Code Playgroud)
https://www.php.net/manual/en/function.str-starts-with.php
编辑:修复了示例代码中的拼写错误(右括号)。
这是一种更快的方法:
// strpos is faster than an unnecessary substr() and is built just for that
if (strpos($str, $prefix) === 0) $str = substr($str, strlen($prefix));
Run Code Online (Sandbox Code Playgroud)
这里.
$array = explode("_", $string);
if($array[0] == "bla") array_shift($array);
$string = implode("_", $array);
Run Code Online (Sandbox Code Playgroud)