Wordpress:仅更改页面标题中的中文字符颜色。菜单

时间:2015-09-05 05:00:16

标签: css wordpress

从应用程序开发过渡到Web开发,所以我仍然想要解决所有问题。

如何仅从Wordpress更改页面标题和菜单中的中文字符颜色?它应该在css中完成,但我不确定如何以这种方式检测汉字。任何见解将不胜感激!

1 个答案:

答案 0 :(得分:1)

CSS不是一种编程语言,因此无法检测中文字符 - 这必须通过使用正则表达式按照Unicode字符范围过滤页面上的单个字符来完成,并选择那些属于CJKUI块。此范围为very well discussed in another SO question here。总结范围:

  • CJK统一表意文字:\u9FFF\u3400
  • CJK统一表意文字扩展A:\u4DFF\u20000
  • CJK统一表意文字扩展B:\u2A6DF\uF900
  • CJK兼容性表意文字:\uFAFF\u2F800
  • CJK兼容性表意文字补充:\u2FA1F<span lang="zh">

第一个范围通常就足够了,但是如果你正在处理包含罕见日期字符的中文文本,那么扩展你的选择以包括完整的CJKUI范围是有利的。

但是,通过在大量文本上使用正则表达式,您正在执行昂贵的匹配操作 - 对于您确定中文字符将会出现的文本的小片段仍然可行。诀窍是迭代地对每个字符detect the Unicode range (it is asked in the Python tag but also works for JS)进行迭代,并将其包含在lang元素中(使用[...-...]属性在语义上有效且推荐)与特定类一起使用,以便您可以对其进行样式化无论如何你想使用CSS。

对于正则表达式模式,诀窍是使用字符范围选择器:[\u4E00-\u9FFF](阅读更多here)。对于最简化的CJKUI集,您可以使用[\u4E00-\u9FFF\u3400-\u4DFF\u20000-\u2A6DF\uF900-\uFAFF\u2F800-\u2FA1F]。但是,如前所述,如果您想真正匹配所有可能的中文unicode字符,则必须使用完整集:$(function() { $('h1, p').each(function() { var text = $(this).html(); $(this).html(text.replace(/([\u4E00-\u9FFF])/g, '<span lang="zh">$1</span>')); }); });

span[lang="zh"] {
  color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1>Title 馦騜 here</h1>
<p>Lorem ipsum 跣鉌 dolor sit 嬞 amet, consectetur adipiscing elit. 蔍 Aliquam dignissim justo metus, nec rhoncus diam 娀 mollis sed. Pellentesque eu 庣 neque sit amet sapien accumsan accumsan 餳 vel nec quam. Sed rutrum 嬚 id justo quis pretium. Vestibulum 鍹 eu ligula id magna vehicula rhoncus nec a tortor. Integer id 楋dolor vitae mi gravida euismod ac eget 馻 dui. Pellentesque eu enim at erat 嬔 pellentesque posuere. Duis ligula magna, pretium sed 騧 sagittis eu, mollis a nibh. Integer ultrices 噈 molestie scelerisque. Maecenas 羭聧蔩 eget nulla sodales, pulvinar magna non, 嫶 vestibulum odio. Sed a luctus mi. In nec 烒 cursus justo. Nunc lacinia 烢 massa a eros semper scelerisque. Fusce dictum lacus 珛 nec ipsum 駷pellentesque, id finibus sapien lacinia.</p>
 enum EnumActions{
     SHIFT,
     REDUCE,
     ACCEPT,
     GOTO ,
     ERROR_A 
    };

int main(){
    enum EnumActions __actionType;
    __actionType = EnumActions::SHIFT; //this is giving an error
    __actionType = SHIFT;//this works fine
}

最好的解决方案是使用regex预处理HTML /用户输入一次,这将与上面相同,这样就可以避免运行时正则表达式包装中文字符。