Php 删除字符串开头的单词

Php 删除字符串开头的单词,php,regex,string,Php,Regex,String,如何检查$str以查看是否有单词“hello”,并仅当它位于字符串开头(前5个字母)时才将其删除?您可以使用substr,即preg\u replace: $str = "hello world, what's up"; ^指示字符串的开头,并根据@Havenard的注释为不区分大小写的匹配指定一个i标志 $str = "hello world, what's up?"; $pre = "hello "; if(substr($str, 0, strlen($pre)) === $pre)

如何检查
$str
以查看是否有单词“hello”,并仅当它位于字符串开头(前5个字母)时才将其删除?

您可以使用
substr
,即
preg\u replace

$str = "hello world, what's up";

^
指示字符串的开头,并根据@Havenard的注释为不区分大小写的匹配指定一个
i
标志

$str = "hello world, what's up?";
$pre = "hello ";

if(substr($str, 0, strlen($pre)) === $pre)
    $str = substr($str, strlen($pre));

echo $str;    // world, what's up?
preg_替换('/^hello\b/U',''$str)


这将替换“hello world”中的“hello”,而不是“helloworld”。因为它只替换字符串开头的一个实例,所以cpu使用量可以忽略不计。

您缺少一个
;-)做得“对”。只是“一个”可能的欺骗?天哪,一定有几千人!同时使用
/i
标记进行不区分大小写的匹配。如果您如此关注速度,而不是代码可读性,为什么要使用
strlen($pre)
两次?将其保存在变量中。或者在这种情况下,为什么不直接把它设为5呢?我几乎直接从我链接的副本中选取了这个例子。好的建议+1不使用regex为什么要放
/U
?你不用量词!但是
\b
是个好主意。如果你很热,你可以删除后面的空格。你是对的,在这种情况下,ungreedy的“U”是不必要的,这是出于习惯。
preg_replace('/^hello/i', '', $str);