在将多种十六进制颜色更改为跨度时遇到问题。当前代码仅更改一种颜色。您知道如何使它适用于多种颜色吗?
function convertHexToSpan($name)
{
$name = preg_replace('/\*#([a-f\d]{6})(.*)\*[a-f\d]+/', "<span style='color:$1'>$2</span>", $name);
return $name;
}
$text = "#ff6600Hello #ff0000world";
$newText = convertHexToSpan($text);
OUTPUT SHOULD BE "<span style='color:#ff600'>Hello</span><span style='color:#ff0000'>world</span>
答案 0 :(得分:0)
更新正则表达式将为您提供大部分帮助,但是我们必须做出一些与原始问题略有不同的假设。
如果使用以下内容作为表达式:
/(#[a-f\d]{6})([^ ]+)/
preg_replace进行重复搜索,因为正则表达式并不是真正要进行迭代,因此我删除了第二个十六进制搜索。这将找到6个十六进制数字作为第一组,然后第二组是不是空格的任何字符。
注意:我假设您正在尝试打破单词边界,但是如果不是这样,则需要进行修改。我还假设您要在转换后保留单词之间的空间,但是您的示例没有显示空间。
要删除单词之间的空格,只需修改正则表达式以匹配空格(然后它们将被删除),如下所示:
/(#[a-f\d]{6})([^ ]+)( )+/