From zenoven on 2010-06-15 12:23:44
表情符号被截断 速求绝世高手来一如来神掌
昨晚我疯狂的用代码加了好几项功能(不过我只是借用朋友的代码再自己稍加修改,呵呵)
1、免插件侧边栏读者墙,效果在文章页面的sidebar就能看到。
2、免插件单独的读者墙页面,效果在这里>>
读者
3、免插件最新评论,效果在每个页面就能看到。
基本上已经很完美了,但是一看最新评论,问题马上就出来了?
那就是最新评论中的表情符号被截断问题。
问题如下
我的最新评论采用的是免插件版,里面有个截取函数,截取每条评论中的前N个字符,多余的用“...”代替。
本来已经是很完美了,因为用了 convert_smilies()函数将表情符号转换后,
大部分的表情都显示正确了。
但是仍有一部分表情符号没有转换,哪一部分呢?
评论字数超过15个字符(我在前面说过截取每条评论中的前N个字符,那个N就是15了),表情字符开始于第12或第13或第14或第15个。
比如我的标签符号是这种形式的 :(X): (X为1到24的数字)
如果评论的第12或第13或第14或第15个字符开始为 :(X): 这种表情字符,那么就显示不了,因为他们被截断了。
效果看我下面的截图,第一条评论中的表情字符被截断,而最后一条则正常显示了。
<img class="aligncenter size-full wp-image-1342" title="表情符号被截断" src="http://www.zenoven.com/wp-content/2010/06/表情符号被截断.gif" alt="" width="291" height="253" />
这个问题的难点就在于,怎么能不让截断表情符号?
有朋友会解决的吗?
From 帅哥 on 2010-06-15 12:34:43
这个问题。。。。不晓得,呵呵
From 自由人 on 2010-06-15 12:37:21
:(12): 额,我这个问题好像还真是不那么容易解决,难道非得再写个函数什么的? :(21):
From 万戈 on 2010-06-15 12:46:41
这个问题我也有,不过被我无视了,哈哈
如果要解决的话就要用正则吧
From 自由人 on 2010-06-15 12:48:33
额。。。看来确实不太容易啊
From 集趣 on 2010-06-15 12:49:26
这个问题解决起来确实不容易啊~
From 自由人 on 2010-06-15 12:55:53
:(14): 莫非真得把这个问题放下
From 心情签名 on 2010-06-15 13:08:50
懒得管这个东西~~
From 自由人 on 2010-06-15 13:20:24
哎。。。有时候完美好像不太容易实现哪
From Dianso on 2010-06-15 13:24:42
我都不在侧边显示评论这些了
From zwwooooo on 2010-06-15 13:28:31
没注意,忽视吧
From 自由人 on 2010-06-15 13:36:00
我也去了很久一段了,不过最近又加上了,不然觉得博客太空了
From 自由人 on 2010-06-15 13:36:55
:(14): 大牛们都不会 看来真的要杯具了
From silsnow on 2010-06-15 13:49:54
技术盲飘过啊……
From 自由人 on 2010-06-15 14:02:37
呵呵,多了解点就会拉
From silsnow on 2010-06-15 16:53:57
唉,天生对技术不敏感……
From 二十六公斤 on 2010-06-15 17:27:45
:(7): 大牛们都不行,我等小牛岂能行?? :(9):
From 自由人 on 2010-06-15 17:41:37
:(16): 试试嘛~~ 说不定下个大牛就是你啦~
From 自由人 on 2010-06-15 17:44:38
:(1): 只要能达到自己的要求就好了
From 柳城 on 2010-06-15 18:54:45
不去理它是最好的。呵呵
如果表情:开始。:结束。
作一下判断咯~~
From 自由人 on 2010-06-15 18:56:49
哎。。。不理他了,其实出现这种情况的几率也不大,如果要做判断的话还得写函数什么的挺麻烦
From 阿修 on 2010-06-15 20:11:24
不让它输出表情不就成了
From 博百优 on 2010-06-15 20:54:13
我还没有表情!!!
From 飞晏 on 2010-06-15 21:56:30
我是来灌水的
PS:为什么你右侧的评论排行不显示数量?
From 自由人 on 2010-06-15 22:02:07
这个是评论的一部分哪~~
From 自由人 on 2010-06-15 22:02:19
呵呵,这个可以有的
From 自由人 on 2010-06-15 22:02:47
:(8): 这个我还真没发现,Firefox下面显示的,我找下解决方法去,谢谢提醒!
From 自由人 on 2010-06-15 22:18:29
已经搞定啦~~ 呵呵,现在可以显示了
From topchun on 2010-06-15 22:38:43
还没空折腾wp
From 自由人 on 2010-06-15 22:50:17
:(4): 这个有空了可以折腾下的哦~~
From 飞晏 on 2010-06-16 17:35:52
哦 为了不影响灌水 再建议你邮件回复评论
From XL on 2010-06-16 18:18:08
:(16): 哎 你的表情不会动。
From 自由人 on 2010-06-16 22:51:30
:(8): 额。。。
From 柳城 on 2010-06-17 16:09:32
就是说嘛。反正也没人留意那东西。
From 网络推广 on 2010-06-17 21:35:33
果然是高手啊 :(18):
From 记忆盒子 on 2010-06-18 15:30:44
把截取后的评论作个replace,就可以了。
写一个正则表达式来实现。模型是“:(N)...”,替换为完整的“:(N):...”,需要写个pattern。
注意,“:(N)...”还可能是“:(N...”、“:(...”、“:...”
From 记忆盒子 on 2010-06-18 15:39:48
补充:Pattern=":(.[^\.]*)..." 可匹配上述几个字符串
From 自由人 on 2010-06-18 19:05:45
这个我也想过了,这个也只是解决问题里面的一部分,如果截取后的表情符号只有:( 或是: 就没办法替换了,因为不知道该匹配哪一个了.也就是说只要评论符号不缩减弄成一个字符就会有问题。
From willin on 2010-06-19 21:28:50
我沒理它, 反正新評論一來馬上擠掉了.
From 自由人 on 2010-06-19 22:52:17
嗯,其实影响不大
From 记忆盒子 on 2010-06-19 23:08:07
嗯,我就知道你会这么说。这两种情况,就replace为空吧。只考虑带数字的情况就可以了。
你也可以这样处理。
那就是在截取之前就判断第12、13、14、15个字符是什么,如果是表情符号的话,你就把截取字符串延长。这样,就可以保留完整的表情字符了。这种方法甚至不需要动用正则表达式。
From 自由人 on 2010-06-19 23:32:11
:(1): 非常感谢你哈~~ 等有时间了好好鼓捣下,还有就是如果能有单个字符可以代表一个表情就好了,那样就不用考虑这些问题了
From 奥德雷的雷人事迹 on 2010-06-26 00:18:23
免插件最新评论 这个我想知道是怎么实现的
From Afio on 2010-07-19 22:57:16
:(5): 我表情符号搞了几天没搞上,气得我不弄了,还有一个就是评论邮件回复功能,TMD :(19):
From 自由人 on 2010-07-19 22:59:31
有个代码的,需要?
From 自由人 on 2010-07-19 23:01:36
嗯?表情我是无插件实现的,第二个我是用的wp thread comment那个插件实现的
From Afio on 2010-07-19 23:04:34
都搞过,估计是我主机不支持 :(6): 不过按理说 别人在我那的评论 就应该支持mail()函数啊 我晕
From 奥德雷的雷人事迹 on 2010-07-20 23:37:03
嗯,给我个吧