在PHP中如何围绕最后一个字符包裹span标签?

时间:2014-04-09 13:36:33

标签: php regex str-replace

嗨我需要在span标签中包装字符串的最后一个字母,我该如何在php中执行此操作?

例如:

$string = 'Get on the roller coaster';

应输出:

'Get on the roller coaste<span>r</span>'

3 个答案:

答案 0 :(得分:5)

找到

(.)$

替换为

<span>\1</span>

演示:http://regex101.com/r/bY8kX0

在php中这样:

<?php
$string = 'Get on the roller coaster';
echo preg_replace('/(.)$/', '<span>\1</span>', $string);

答案 1 :(得分:4)

使用此正则表达式:

(.)$

并将其替换为:

<span>\1</span>

.表示字符,$表示结尾,()用于对字符进行分组,以便可以使用。

所以正则表达式说:匹配最后一个字符。

我认为这是一种矫枉过正,本来会给出一个原生的php答案但是,我不知道php:)

感谢sshashank124的分组提示!

答案 2 :(得分:2)

我可能会因为效率低下而受到抨击,但这里有另一种选择:)

// your string :)
$string = 'Get on the roller coaster';

// count the chars of your string, not the bytes ;)
$stringLength = mb_strlen($string);

// a string's characters can be accessed in array form IF it is an actual string and not an INT or w/e
// echo $string[0] would produce the letter 'G'
// so we want the last character, right-o!
$wrapped = '<span>'.$string[($stringLength - 1)].'</span>';

// mb_substr() the old string and give it that <span>-wrapped char
$newString = mb_substr($string, 0, -1).$wrapped;

// and presto!
// $newString is now === Get on the roller coaste<span>r</span>