如何从php字符串中删除第一个单词

时间:2011-07-25 22:27:00

标签: php word

我想用PHP删除字符串中的第一个单词。 尝试搜索但找不到我能理解的答案。

例如:“White Tank Top”因此它变成“Tank Top”

由于

6 个答案:

答案 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(),请确保限制爆炸以达到最佳效率。

Demonstration

$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匹配一个空白字符。