Php 问题:仅替换字符串的最后一个空格

Php 问题:仅替换字符串的最后一个空格,php,regex,Php,Regex,我试图用标记替换名称中的最后一个空格。到目前为止,我的姓被简单地删除了,“Amy L.Example”变成了“Amy L.” 在此正则表达式上的任何帮助都将不胜感激。刚刚开始了解它们是如何工作的 代码: <?php $resume['name'] = preg_replace('/\s(\S*)$/', '<br />', $resume['name']); echo $resume['name'] ?> 您需要在替换字符串中放入$1,这样您捕获的单词将被保留

我试图用
标记替换名称中的最后一个空格。到目前为止,我的姓被简单地删除了,“Amy L.Example”变成了“Amy L.”

在此正则表达式上的任何帮助都将不胜感激。刚刚开始了解它们是如何工作的

代码:

    <?php $resume['name'] = preg_replace('/\s(\S*)$/', '<br />', $resume['name']); echo $resume['name'] ?>


您需要在替换字符串中放入
$1
,这样您捕获的单词将被保留,而不是删除。

您需要在替换字符串中放入
$1
,这样您捕获的单词将被保留,而不是删除。

您告诉PHP将空格字符后的任何非空格字符替换为,放置在字符串末尾,带有

,因此您的
最后一个空格+最后一个单词
显然已被删除,并仅由标记替换

只需将其编辑为:

preg_replace('/\s(\S*)$/', ' \\1<br />', $name);
preg\u replace('/\s(\s*)$/','\\1
',$name);

通过这种方式,您可以将
最后一个空格+最后一个单词
替换为空格、单词本身和标记。

您告诉PHP将字符串末尾的空格字符后的任何非空格字符替换为

,因此,您的
最后一个空格+最后一个单词
显然已被删除,并仅由标记替换

只需将其编辑为:

preg_replace('/\s(\S*)$/', ' \\1<br />', $name);
preg\u replace('/\s(\s*)$/','\\1
',$name);

通过这种方式,您可以将
最后一个空格+最后一个单词
替换为一个空格、单词本身和标记。

顺便提一下,另一种方法是:
preg_replace('/\s(?=\s*$)/','
,$resume['name')-在这种情况下,单词不会被捕获,只是通过向前看确认,因此您不需要
$1
。不过,我不知道哪种方法更有效。顺便说一句,另一种方法是:
preg\u replace('/\s(?=\s*$)/',“
,$resume['name')-在这种情况下,单词不会被捕获,只是通过向前看确认,因此您不需要
$1
。不过,我不知道哪一个更有效。