preg_replace 最后一个字符

问题描述

我有一个代码,只需要把最后两个字母变成红色

$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 中没有与此修饰符等效的修饰符。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...