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

如何从php字符串中删除第一个单词,php,word,Php,Word,我想使用PHP从字符串中删除第一个单词。 尝试搜索,但找不到我能理解的答案 例如:“白色坦克顶部”,所以它变成了“坦克顶部” 谢谢 ?无需分解或数组操作,您可以使用以下功能: 更新:由于@Sid删除了额外的空白,您可以执行以下操作: echo substr(strstr("White Tank Top"," "), 1); 请尝试此函数,我希望它对您有用。您可以将preg\u replace函数与正则表达式^(\w+\s)一起使用,该正则表达式将匹配字符串的第一个字本身: $str = "Wh

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

例如:“白色坦克顶部”,所以它变成了“坦克顶部”

谢谢


无需分解或数组操作,您可以使用以下功能:

更新:由于@Sid删除了额外的空白,您可以执行以下操作:

echo substr(strstr("White Tank Top"," "), 1);

请尝试此函数,我希望它对您有用。

您可以将
preg\u replace
函数与正则表达式
^(\w+\s)
一起使用,该正则表达式将匹配字符串的第一个字本身:

$str = "White Tank Top";
$str = preg_replace("/^(\w+\s)/", "", $str);
var_dump($str); // -> string(8) "Tank Top"

如果不能保证字符串中有空格,请小心选择在这种情况下不会失败的技术

如果使用
explode()
请确保限制爆炸以获得最佳效率

:

输出:

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

我更喜欢正则表达式技术,因为它在上述所有情况下都是稳定的,并且是一个单一的函数调用。请注意,不需要捕获组,因为正在替换fullstring匹配项
^
匹配字符串的开头,
\S+
匹配一个或多个非空白字符,
\S
匹配一个空白字符。

您是指第一个空格之前的字符吗?您能否将其压缩为
返回内爆('',数组移位('',句子))?我对php从来都不是很确定。这个解决方案占用了大量内存。如果字符串有很多空格,数组就会变大。amosrivera的解决方案要好得多(虽然不完全,因为它也保留了空格字符)。@Patrick Perini:no-array_shift()返回数组中的第一个元素,而不是修改后的元素array@Sid:首先,amosrivera的答案在语义上是不同的(考虑不包含空格的字符串会发生什么情况)此外,我几乎不会称之为内存占用者——我希望它使用的内存比amosrivera的答案要多——但如果不测试每种方法,我无法判断哪种方法在系统上的有效占用空间更大。不管是不是内存占用者,这个答案缺少一个解释。关键是,您的代码片段执行了太多的爆炸。请看我的有限爆炸。这比数组操作答案要好,但是这也会留下空格字符。这可以通过执行echo substr(strstr(“白色水箱顶部”),1)来切断+1为了简单起见,我总是忘记
strtr
。当我看到你的答案时,我正准备用strpos键入3行。添加一个
ltrim
,以防有多个空格,而您是金色的。@Sid开头的空格是白色的吗?我只是检查了一下,效果很好。你能验证一下吗?@Fanis我完全理解你,在php中有这么多不同的字符串操作函数很容易忘记。@amosrivera like@Sid说它将包含匹配的空间。通过在网页上回显,您将不容易看到它,但可以执行
strlen
或在调试器中运行它,您将发现它:)
echo substr(strstr("White Tank Top"," "), 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;
}
$str = "White Tank Top";
$str = preg_replace("/^(\w+\s)/", "", $str);
var_dump($str); // -> string(8) "Tank Top"
$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