Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于给定的十六进制颜色代码在字符串中创建标记样式 琐事_Javascript_Php_Html - Fatal编程技术网

Javascript 基于给定的十六进制颜色代码在字符串中创建标记样式 琐事

Javascript 基于给定的十六进制颜色代码在字符串中创建标记样式 琐事,javascript,php,html,Javascript,Php,Html,如您所知,CSS中的颜色可以用RGB模型(RGB(255,255,255))或十六进制代码(#ffffff或#fff)表示,它们通常较短。这两个例子都代表白色 问题: 由于语法较短,我们可以轻松地在字符串中嵌入/插入十六进制代码。我想要的函数将删除这些十六进制代码(表示为给定字符串中的#xxxxxx(任意位置))并将它们转换为标记标记,标记标记将字符串从移除颜色的处上色到字符串的末尾或,直到找到新的十六进制代码为止(这将覆盖以前的颜色) 例子 项目符号表示代码块内的输入,后跟输出 Jo#ff0

如您所知,CSS中的颜色可以用RGB模型(
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>
    
一小条 这就是它在HTML中的外观

-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>';