ZenOven's Archivers

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

嗯,给我个吧

Tags: 截断, 表情符号


©ZenOven