Javascript 基于给定的十六进制颜色代码在字符串中创建标记样式 琐事
如您所知,CSS中的颜色可以用RGB模型(Javascript 基于给定的十六进制颜色代码在字符串中创建标记样式 琐事,javascript,php,html,Javascript,Php,Html,如您所知,CSS中的颜色可以用RGB模型(RGB(255,255,255))或十六进制代码(#ffffff或#fff)表示,它们通常较短。这两个例子都代表白色 问题: 由于语法较短,我们可以轻松地在字符串中嵌入/插入十六进制代码。我想要的函数将删除这些十六进制代码(表示为给定字符串中的#xxxxxx(任意位置))并将它们转换为标记标记,标记标记将字符串从移除颜色的处上色到字符串的末尾或,直到找到新的十六进制代码为止(这将覆盖以前的颜色) 例子 项目符号表示代码块内的输入,后跟输出 Jo#ff0
RGB(255,255,255)
)或十六进制代码(#ffffff
或#fff
)表示,它们通常较短。这两个例子都代表白色
问题:
由于语法较短,我们可以轻松地在字符串中嵌入/插入十六进制代码。我想要的函数将删除这些十六进制代码(表示为给定字符串中的#xxxxxx
(任意位置))并将它们转换为标记标记,标记标记将字符串从移除颜色的处上色到字符串的末尾或,直到找到新的十六进制代码为止(这将覆盖以前的颜色)
例子
项目符号表示代码块内的输入,后跟输出
Jo#ff0000hn
Jo<span style="color:#ff0000">hn</span>
D#00ffffarth#ffff00Vader
D<span style="color:#00ffff">arth</span><span style="color:#ffff00">Vader</span>
-Jo#ff0000hn
约翰
-灰烬#00ff00ley
阿什利
-D#00ffffarth#0000ffVader
DarthVader
DarthVader
注意:两者相同,第一个可能在语法上更正确。
-一个#ff0000very#0000ffcomplex#0fc0fcexa#ff0000mple
一个非常复杂的例子
您需要一个正则表达式,类似于:
$string = 'Jo#ff0000hn';
echo preg_replace('/(#[0-9a-f]{1,6})([a-z]+)/i', '<span style="color:$1">$2</span>', $string);
$string='Jo#ff0000hn';
echo preg_replace('/(#[0-9a-f]{1,6})([a-z]+)/i','$2',$string);
假设名称不包含hashtag,并且颜色的格式始终为#000000
$name='Jo#ff0000hn';
$p=strpos($name,#’);
$color=substr($name,$p,7);
$newcolor='';
$name=str_replace($color,$newcolor,$name)。“”;
你试过什么吗?我也不清楚这个问题。我试过preg_replace,但那只会删除十六进制颜色代码。@GTX:你能展示一下你试过的吗?@GTX:你看到这么多否决票的原因并不是因为不够清晰,而是因为你没有做出明确的努力。如果在寻求帮助时,y是,这对堆栈溢出有很大帮助您提供的代码显示了您首先尝试过的内容。这既澄清了您的问题,也向社区表明,您不仅仅是在寻找为您编写代码的人,而是在与未来可能有相同问题的其他人互动、学习和帮助。希望您在这里的时间具有教育意义!干杯!#F不是有效的十六进制颜色。。您需要匹配3或6。这将完全删除我的文本。我想在十六进制颜色代码后为文本着色。谢谢,这是可行的,但如果我使用以下字符串:-rG GT#ff0000X#ffffff~返回-rG GTXf(颜色有效,只是X后的这个“f”)谢谢,但效果不太好。有些颜色没有转换,如果我有两种颜色,第二种就不会转换。比如:-rG GT#ff0000X#ffffffff~将其转换为-rG GT“X#ffffffff~(“X#ffffffff~是红色的)这段代码满足了您的所有要求。如果您有更具体的需求,您应该向我们提供更多的细节和一些代码。函数convertHexToColor($string){$arr=explode(#“,$string);$str=“”;foreach($arr as$val){$mtc=preg_match('/([0-9a-f]{1,6})/,$val);$clr=“ffffff”;If($mtc){$clr=subsr($val,0,5);$val=substr($val,6);}$str=$str.'.$val.'.}返回$str;}
如果我有名字-rG-R3#9a2cd8birth
D<span style="color:#00ffff">arth<span style="color:#ffff00">Vader</span></span>
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>
$string = 'Jo#ff0000hn';
echo preg_replace('/(#[0-9a-f]{1,6})([a-z]+)/i', '<span style="color:$1">$2</span>', $string);
$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>';