Joomla!-开源天空

2008-09-08
首页 专栏热点 Joomla! 应用 Joomla中如何完整截取文章的部分内容


Joomla中如何完整截取文章的部分内容

E-mail

昨天在解决memcache的过程中,遇到了字符串截断的问题,虽然分析了原因并没有解决。翻译了关于Joomla UTF-8 的规范,终于明白了问题所在。

如果有兴趣,可以看看这几篇文章:
[翻译] Joomla! UTF-8 规范 (WIP) 一
[翻译]Joomla! UTF-8 规范 (WIP) 二
[翻译]Joomla! UTF-8规范 (WIP) 三
[翻译]Joomla! UTF-8规范 (WIP) 四

在memcache取回字符后,应该采用JString来处理字符串截断,否则就会出现上面规范中说的问题。

应该这样 JString::substr($item->text,0,300) 就不会发生字符串截断,以及出现乱码半个字符的问题了。

同时,还应该注意,文章的正文中是有 html标签的,如果这样截取,会可能出现标签不匹配的显现,严重可能导致页面变形,所以简单写了一个函数,完成标签匹配功能。在Joomla中好像没找到相应的函数,如果以后找到再修改吧。函数的代码如下:

 function well_form($xml) {
  preg_match_all("/<([^\/>]+)>/", $xml, $begins);
  preg_match_all("/<\/([^\/>]+)>/", $xml, $ends);
  $begins = $begins[1];
  $ends = $ends[1];
  for ($i = 0; $i < count($begins); $i++) {
   $j = array_search($begins[$i], $ends);
   if ($j !== false) {
    array_splice($begins, $i, 1);
    array_splice($ends, $j, 1);
    $i--;
   }
  }
  foreach ($begins as $tag) {
   $xml .= "</$tag>";
  }
  return $xml;
 }

截断后的字符,再用上面的函数处理一下,就应该基本不会出现页面错位的情况了。

相关文章:
两个Joomla!即时通讯工具的扩展
收藏一篇关于Joomla! 1.5 routing的文章
绝对好文章,Joomla! API在前台程序执行顺序
Joomla插件开发规范
Joomla源代码解析系列文章汇总
Joomla开发中怎样连接外部数据库
新增英文原版怎样用Joomla打造网站书籍
Joomla数据库中几个重要的数据表

发表您的文章评论

您的姓名 (昵称)
标题:
评分: 很差一般较好很好
评论:
验证码:
请输入验证码