Php 以尽可能最有效的方式读取和删除子字符串,如array_pop(),但用于子字符串

Php 以尽可能最有效的方式读取和删除子字符串,如array_pop(),但用于子字符串,php,string,substring,Php,String,Substring,我有一个字符串,可以像下面的任何一个。换句话说,它可能有“早上”或“晚上”,但有时它可能什么都没有 "bla bla in the morning" or "bla bla bla in the evening" or "bla bla bla" php是否具有同时隔离和删除该子字符串的功能?类似于$last\u in\u array=array\u pop($arr)将最后一个元素保存到数组中的$last\u中,同时将其从数组中删除。对于我正在解释的场景中的字符串,可以这样做。如果没有,

我有一个字符串,可以像下面的任何一个。换句话说,它可能有“早上”或“晚上”,但有时它可能什么都没有

"bla bla in the morning" or 
"bla bla bla in the evening" or 
"bla bla bla"
php是否具有同时隔离和删除该子字符串的功能?类似于
$last\u in\u array=array\u pop($arr)
将最后一个元素保存到数组中的
$last\u
中,同时将其从数组中删除。对于我正在解释的场景中的字符串,可以这样做。如果没有,什么是真正有效的方法

function string_pop(&$haystack, $needle) {
    if (strpos($haystack, $needle) !== false) {
        $haystack = str_replace($needle, "", $haystack);
        return $needle;
    }
    return false;
}

$string = "bla bla in the morning";
$return = string_pop($string, " in the morning");

var_dump($string);
var_dump($return);
输出:

$string: string(7) "bla bla"
$return: string(15) " in the morning"

如果你想让它工作不同,请澄清。完整的输入/输出规范就好了。或者你可以把这里的东西写下来:)