问题描述
我有一个代码,只需要把最后两个字母变成红色
$text = '£5,485.00';
$text = preg_replace('/(\b[a-z])/i','<span style="color:red;">\1</span>',$text);
echo $text;
需要这样enter image description here
解决方法
逐字回答您的问题:
preg_replace('/\w{2}$/','<span style="color:red;">\0</span>',$text);
^^^^^^ ^^
\w{2} : two word characters \0 : main matching group
$ : anchored at the end
您可能希望支持 Unicode(/u
- u
修饰符)并防止 $
匹配字符串结尾和字符串结尾处的换行符({ {1}} - /D
修饰符):
D
这个修饰符开启了与 Perl 不兼容的 PCRE 的附加功能。模式和主题字符串被视为 UTF-8。无效的主题将导致 preg_* 函数不匹配;无效的模式将触发 E_WARNING 级别的错误。 5 和 6 个八位字节的 UTF-8 序列被认为是无效的。
u (PCRE_UTF8)
如果设置了此修饰符,则模式中的美元元字符仅匹配主题字符串的末尾。如果没有这个修饰符,如果它是换行符(但不会在任何其他换行符之前),美元也会在最后一个字符之前匹配。如果设置了 m 修饰符,则忽略此修饰符。 Perl 中没有与此修饰符等效的修饰符。