Discuz教程网

PHP smarty函数扩展

[复制链接]
authicon dly 发表于 2011-8-28 10:21:26 | 显示全部楼层 |阅读模式
中文截取 modifier.cn_truncate.php
代码如下:

  1. function smarty_modifier_cn_truncate($string, $strlen = 20, $etc = '...',
  2. $keep_first_style = false)
  3. {
  4. $strlen = $strlen*2;
  5. $string = trim($string);
  6. if ( strlen($string) <= $strlen ) {
  7. return $string;
  8. }
  9. $str = strip_tags($string);
  10. $j = 0;
  11. for($i=0;$i<$strlen;$i++) {
  12. if(ord(substr($str,$i,1))>0xa0) $j++;
  13. }
  14. if($j%2!=0) $strlen++;
  15. $rstr=substr($str,0,$strlen);
  16. if (strlen($str)>$strlen ) {$rstr .= $etc;}
  17. if ( $keep_first_style == true && ereg('^<(.*)>$',$string) ) {
  18. if ( strlen($str) <= $strlen ) {
  19. return $string;
  20. }
  21. $start_pos = strpos($string,substr($str,0,4));
  22. $end_pos = strpos($string,substr($str,-4));
  23. $end_pos = $end_pos+4;
  24. $rstr = substr($string,0,$start_pos) . $rstr . substr($string,$end_pos,strlen($string));
  25. }
  26. return $rstr;
  27. }
复制代码


modifier.ubb.php
代码如下:

  1. <?php
  2. function smarty_modifier_ubb($str) {
  3. $ubbs['quote'][0] = '/\[quote\](.*?)\[\/quote\]/s';
  4. $ubbs['quote'][1] = '<blockquote>引用:<hr size=1>\1<hr size=1></blockquote>';
  5. $ubbs['b'][0] = '/\[b\](.*?)\[\/b\]/s';
  6. $ubbs['b'][1] = '<b>\1</b>';
  7. $ubbs['i'][0] = '/\[i\](.*?)\[\/i\]/s';
  8. $ubbs['i'][1] = '<i>\1</i>';
  9. $ubbs['u'][0] = '/\[u\](.*?)\[\/u\]/s';
  10. $ubbs['u'][1] = '<u>\1</u>';
  11. $ubbs['li'][0] = '/\[li\](.*?)\[\/li\]/s';
  12. $ubbs['li'][1] = '<li>\1</li>';
  13. $ubbs['img'][0] = '/\[img\](.*?)\[\/img\]/s';
  14. $ubbs['img'][1] = '<img border="0" src="\1">';
  15. $ubbs['img2'][0] = '/\[img=([^,]+),([^\]]+)\](.*?)\[\/img\]/s';
  16. $ubbs['img2'][1] = '<img border="0" width="\1" height="\2" src="\3">';
  17. $ubbs['url'][0] = '/\[url\](.*?)\[\/url\]/s';
  18. $ubbs['url'][1] = '<a href="\1" target="_blank">\1</a>';
  19. $ubbs['url2'][0] = '/\[url=([^\]]+)\](.*?)\[\/url\]/s';
  20. $ubbs['url2'][1] = '<a href="\1" target="_blank">\2</a>';
  21. $ubbs['email'][0] = '/\[email=([^\]]+)\](.*?)\[\/email\]/s';
  22. $ubbs['email'][1] = '<a href="mailto:\2">\2</a>';
  23. $ubbs['qq'][0] = '/\[qq\]([0-9]{5,10})\[\/qq\]/s';
  24. $ubbs['qq'][1] = '<a target="new" href="tencent://message/?uin=\1&Site=www.52515.net&Menu=yes"><img border="0" src="http://wpa.qq.com/pa?p=1:\1:\1" alt="点击这里给我发消息"></a>';
  25. $ubbs['color'][0] = '/\[color=([^\]]+)\](.*?)\[\/color\]/s';
  26. $ubbs['color'][1] = '<font color="\1">\2';
  27. $ubbs['font'][0] = '/\[font=([^\]]+)\](.*?)\[\/font\]/s';
  28. $ubbs['font'][1] = '<font face="\1">\2';
  29. $ubbs['size'][0] = '/\[size=([0-9]+)\](.*?)\[\/size\]/s';
  30. $ubbs['size'][1] = '<font size="\1" style="line-height:\1em;">\2';
  31. $ubbs['sizept'][0] = '/\[size=([0-9,pt]+)\](.*?)\[\/size\]/s';
  32. $ubbs['sizept'][1] = '<font style="font-size:\1">\2';
  33. $ubbs['align'][0] = '/\[align=([^\]]+)\](.*?)\[\/align\]/s';
  34. $ubbs['align'][1] = '<div align="\1">\2';
  35. $ubbs['media'][0] = '/\[media\](.*?)\[\/media\]/s';
  36. $ubbs['media'][1] = '<embed src="\1"></embed>';
  37. $ubbs['list'][0] = '/\[list\](.*?)\[\/list\]/s';
  38. $ubbs['list'][1] = '<ul>\1</ul>';
  39. $ubbs['list2'][0] = '/\[list=([0-9]+)\](.*?)\[\/list\]/s';
  40. $ubbs['list2'][1] = '<ol>\2</ol>';
  41. $ubbs['indent'][0] = '/\[indent\](.*?)\[\/indent\]/s';
  42. $ubbs['indent'][1] = '<div style="text-indent: 20px;">\1';
  43. $ubbs['table'][0] = '/\[table([=,0-9,%]*)\](.*?)\[\/table\]/s';
  44. $ubbs['table'][1] = '<table style="border:#0099FF 1px dotted;border-right-width:0px; border-top-width:0px;">\2';
  45. $ubbs['tr'][0] = '/\[tr\](.*?)\[\/tr\]/s';
  46. $ubbs['tr'][1] = '<tr>\1';
  47. $ubbs['td'][0] = '/\[td\](.*?)\[\/td\]/s';
  48. $ubbs['td'][1] = '<td style="border:#0099FF 1px dotted; border-left-width:0px; border-bottom-width:0px;"> \1';
  49. $ubbs['td2'][0] = '/\[td([^(\]|\[)]+)\](.*?)\[\/td\]/s';
  50. $ubbs['td2'][1] = '<td style="border:#0099FF 1px dotted; border-left-width:0px; border-bottom-width:0px;"> \2';
  51. $str = str_replace('[*]','<li>',$str);
  52. foreach ($ubbs as $ubb){
  53. $str = ubb_replace($ubb[0],$ubb[1],$str);
  54. }
  55. return $str;
  56. }
  57. function ubb_replace($pattern,$replacement,$str){
  58. do {
  59. $str_ret = $str;
  60. $str = preg_replace($pattern,$replacement,$str);
  61. }while($$str);
  62. return $str_ret;
  63. }
  64. ?>
复制代码



编码 modifier.unescape.php
代码如下:

  1. function smarty_modifier_unescape($str)
  2. {
  3. $str = rawurldecode($str);
  4. preg_match_all("/(?:%u.{4})|[^%]+/",$str,$r);
  5. $ar = $r[0];
  6. foreach($ar as $k=>$v) {
  7. if(substr($v,0,2) == "%u" && strlen($v) == 6)
  8. $ar[$k] = iconv("UCS-2","GB2312",@pack("H4",substr($v,-4)));
  9. }
  10. return join("",$ar);
  11. }
复制代码







上一篇:PHP中Smarty模板初体验
下一篇:PHP smarty模版引擎中变量操作符及使用方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-2 07:06

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表