在最后一个出现的空格处拆分字符串

12

我需要将一个字符串分成两部分。该字符串包含由空格分隔的单词,并且可以包含任意数量的单词,例如:

$string = "one two three four five";

第一部分需要包含除最后一个单词外的所有单词。

第二部分只需要包含最后一个单词。

编辑:两个部分需要作为字符串返回,而不是数组,例如:

$part1 = "one two three four";

$part2 = "five";


1
strrpos是一个很好的起点。手册上有更多信息。 - GordonM
这不是确切问题的答案,但与标题相关,因为我正在寻找几乎相等的两个部分,并且我通过使用wordwrap实现了这一点。 - hayatbiralem
11个回答

0

贪婪地遍历输入字符串中的字符,然后匹配最后出现的空格并在其上进行拆分。非常简单,没有回溯、捕获或任何其他减慢正则表达式引擎速度的原因。

\K 表示“忘记到此为止所有匹配的字符”。

代码:(演示)

$string = "one two three four five";
var_export(
    preg_split('/.*\K /', $string)
);

输出:

array (
  0 => 'one two three four',
  1 => 'five',
)

或者作为单独的变量:(演示)

[$part1, $part2] = preg_split('/.*\K /', $string);
var_export($part1);
echo "\n";
var_export($part2);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接