替换字符串中最后一次出现的字符

时间:2011-02-28 06:54:11

标签: php

我有一个问题,我正在努力寻找解决方案。

基本上,假设你有以下字符串:

    $string = 'Hello I am a string';

你希望以下面的内容结束:

    $string = 'Hello I am a string';

简单地说,用一个不间断的空格替换最后一个空格。

我这样做是因为我不希望标题中的最后一个单词是独立的。仅仅因为在标题方面:

 Hello I am a
 string

看起来不如

 Hello I am
 a string

如何做这样的事情?

5 个答案:

答案 0 :(得分:23)

来自this example的代码可以解决问题:

// $subject is the original string
// $search is the thing you want to replace
// $replace is what you want to replace it with

substr_replace($subject, $replace, strrpos($subject, $search), strlen($search));

答案 1 :(得分:8)

echo preg_replace('/\s(\S*)$/', ' $1', 'Hello I am a string');

输出

Hello I am a string

CodePad

\s匹配空格字符。要明确匹配某个空格,请将其中一个(并将\S更改为[^ ])。

答案 2 :(得分:1)

这样可以解决问题:

$string = preg_replace('/([\s\S]+)\s(\w)$/','$1 $2',$string);

答案 3 :(得分:1)

根据pounndifdef的回答,但是我需要解码  HTML实体,如下所示:

substr_replace($subject, html_entity_decode($replace), strrpos($subject, $search), strlen($search));

也使用了亚历克斯的答案:

preg_replace('/\s(\S*)$/', html_entity_decode(' ').'$1', 'Hello I am a string');

答案 4 :(得分:0)

正常使用str_replace(),但首先反转字符串。然后,将其反转。