基于给定的十六进制颜色代码在字符串中创建标记样式
Create markup styling in a string based on given hex color codes
三叉戟
正如您所知,CSS中的颜色可以用RGB模型(rgb(255, 255, 255)
(或十六进制代码(#ffffff
或#fff
(表示,后者通常较短。这两个例子都代表白色。
问题
由于语法较短,我们可以很容易地在字符串中嵌入/插入十六进制代码。我想要的函数将删除这些十六进制代码(表示为给定字符串中的#xxxxxx
(任何位置((,并将它们转换为标记标记,标记标记将字符串从删除颜色的着色为字符串末尾的或,直到找到新的十六进制代码(这将覆盖以前的颜色(。
示例
项目符号点表示代码块内的输入,然后是输出。
-
Jo#ff0000hn
Jo<span style="color:#ff0000">hn</span>
-
Ash#ffff00ley
Ash<span style="color:#ffff00">ley</span>
-
D#00ffffarth#ffff00Vader
D<span style="color:#00ffff">arth</span><span style="color:#ffff00">Vader</span>
或
D<span style="color:#00ffff">arth<span style="color:#ffff00">Vader</span></span>
-
A #ff0000very #0000ffcomplex #0fc0fcexa#ff0000mple
A <span style="color:#ff0000">very</span> <span style="color:#0000ff">complex</span> <span style="color:#0fc0fc">exa</span><span style="color:#ff0000">mple</span>
代码段
这就是它在HTML中的外观。
- Jo#ff0000hn<br>
Jo<span style="color:#ff0000">hn</span><br><br>
- Ash#00ff00ley<br>
Ash<span style="color:#00ff00">ley</span><br><br>
- D#00ffffarth#0000ffVader<br>
D<span style="color:#00ffff">arth</span><span style="color:#0000ff">Vader</span><br>
D<span style="color:#00ffff">arth<span style="color:#0000ff">Vader</span></span><br>
<i>Note: Both are same, the first one may be more syntactically correct.</i><br><br>
- A #ff0000very #0000ffcomplex #0fc0fcexa#ff0000mple<br>
A <span style="color:#ff0000">very</span> <span style="color:#0000ff">complex</span> <span style="color:#0fc0fc">exa</span><span style="color:#ff0000">mple</span><br>
<br>
测试
下面的两个代码都可以满足我的需求,但它们有一些问题:
- 它们不适用于较短的语法(如
#fff
( - 连续的颜色只检测最后一种颜色(
#ffffff#000000#ff0000
只检测#ff0000
(
PHP(感谢@Maxim Krizhanovsky(
function colorize($string) {
return preg_replace('/(#[0-9a-f]{6})([a-z]+)/i', '<span style="color: $1;">$2</span>', $string);
}
echo colorize("Darth#ff0000Vader");
JavaScript
function colorize(string) {
return string.replace(/(#[0-9a-f]{6})('w+)/gi, `<span style="color: $1;">$2</span>`)
}
console.log(colorize("Darth#ff0000Vader"));
您需要一个正则表达式,类似于:
$string = 'Jo#ff0000hn';
echo preg_replace('/(#[0-9a-f]{1,6})([a-z]+)/i', '<span style="color:$1">$2</span>', $string);
假设名称不包含标签,并且颜色总是格式化为#000000。
$name='Jo#ff0000hn';
$p=strpos($name,'#');
$color = substr($name,$p,7);
$newcolor='<span style="color:'.substr($name,$p,7).'">';
$name = str_replace($color,$newcolor,$name).'</span>';
相关文章:
- 从字符串创建dom元素时添加多个类
- 如何使用字符串创建空的JSON键(是否嵌套)
- 从从字符串创建的函数中获取参数列表
- 如何从带有多个对象的JSON字符串创建JSON对象
- 从字符串创建 JavaScript 函数
- 从XML字符串创建DOM元素,如何使用.getElementsByName()
- 使用 eval 从字符串创建函数的不同方法
- javascript从字符串创建不区分大小写的regex
- PhantomJS从字符串创建页面
- 从任何jquery选择器字符串创建元素的最有效方法
- 是否可以使用HTML从任意字符串创建Jquery对象,例如var$newlink=$('<a>新链接
- 从 JSON 字符串创建的 knockoutjs observableArray 中的未定义(额外)对象
- 奇怪的日期()是用包含空字节的字符串创建的
- 如何使用以 js 为单位递增的字符串创建 for 循环变量
- 如何在 Java 脚本中从字符串创建对象树
- 按字符串创建对象
- jQuery 访问从字符串创建的元素
- 如何从另一个长字符串创建最多 12 个字符的加密字符串
- 从字符串创建的 Javascript 正则表达式 - 为什么它不起作用
- jquery 查询字符串创建问题