我想用PHP删除字符串中的第一个单词。 尝试搜索但找不到我能理解的答案。
例如:“White Tank Top”因此它变成“Tank Top”
由于
答案 0 :(得分:40)
无需爆炸或数组操作,您可以使用函数strstr:
echo strstr("White Tank Top"," ");
//Tank Top
更新:感谢@Sid要删除额外的空白区域,您可以这样做:
echo substr(strstr("White Tank Top"," "), 1);
答案 1 :(得分:4)
您可以将preg_replace
函数与正则表达式^(\w+\s)
一起使用,该函数将匹配字符串本身的第一个单词:
$str = "White Tank Top";
$str = preg_replace("/^(\w+\s)/", "", $str);
var_dump($str); // -> string(8) "Tank Top"
答案 2 :(得分:1)
function remove_word($sentence)
{
$words=array_shift(explode(' ', $sentence));
return implode(' ', $words);
}
答案 3 :(得分:1)
$string = 'White Tank Top';
$split = explode(' ', $string);
if (count($split) === 1) {
// do you still want to drop the first word even if string only contains 1 word?
// also string might be empty
} else {
// remove first word
unset($split[0]);
print(implode(' ', $split));
}
答案 4 :(得分:1)
function remove_word($sentence)
{
$exp = explode(' ', $sentence);
$removed_words = array_shift($exp);
if(count($exp)>1){
$w = implode(' ', $exp);
}else{
$w = $exp[0];
}
return $w;
}
试试这个功能我希望它对你有用。
答案 5 :(得分:-3)
如果不能保证字符串中有空格,请谨慎选择在这种情况下不会失败的技术。
如果使用explode()
,请确保限制爆炸以达到最佳效率。
$strings = ["White", "White Tank", "White Tank Top"];
foreach ($strings as $string) {
echo "\n{$string}:";
echo "\n-\t" , substr($string, 1 + (strpos($string, ' ') ?: -1));
$explodeOnce = explode(' ', $string, 2);
echo "\n-\t" , end($explodeOnce);
echo "\n-\t" , substr(strstr($string, " "), 1);
echo "\n-\t" , ltrim(strstr($string, " "));
echo "\n-\t" , preg_replace('~^\S+\s~', '', $string);
}
输出:
White:
- White
- White
- // strstr() returned false
- // strstr() returned false
- White
White Tank:
- Tank
- Tank
- Tank
- Tank
- Tank
White Tank Top:
- Tank Top
- Tank Top
- Tank Top
- Tank Top
- Tank Top
我更喜欢regex技术,因为它在上述所有情况下都是稳定的,并且是单个函数调用。请注意,不需要捕获组,因为已替换了全字符串匹配项。 ^
匹配字符串的开头,\S+
匹配一个或多个非空白字符,\s
匹配一个空白字符。