程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php smarty中文截取插件開發示例

php smarty中文截取插件開發示例

編輯:關於PHP編程

smarty 無疑是 php 開發裡面目前最流行最出名的模板引擎了,通過使用該模板引擎,給我們的開發工作中帶來了極大的方便。下面分享一下 smarty 插件技術(以創建一個 php smarty 中文字符串截取為例),充分利用 smarty 的各種特性,使 php smarty 成為我們手中更為鋒利的利器,讓我們的工作更加快速高效。

(1) 首先我們需要了解一下 smarty 及其插件的一些知識

1. 什麼是smarty?

 smarty是一個使用PHP寫出來的模板PHP模板引擎, 是php.net推薦的一個模板系統.
 
2. 什麼是smarty的插件?

smarty的插件是指smarty中的plugins, 是一些嵌入模板內的一些功能性控制語句, smarty中的Variable Modifiers(變量調節)實際就是一些內置的插件。

3. 插件是怎麼工作的?

在smarty模板中使用了插件調用語句時動態的載入, 你可以將你寫好的插件放入smarty目錄中的lib目錄下的plugins目錄裡面, 這樣在模板中使用這些插件時它將會被自動載入。

4. 插件有幾種類型?

smarty 插件的類型有:function, modifier, block, compiler,prefilter, postfilter, outputfilter, resource, insert,本篇文章我們只分享一下如何開發 function 類型的插件,其它類型的開發方法大同小異,大家可以模仿試試。

5. 如何命名插件?

文件名形式:

type.name.php

type指的是類型,上邊提到的幾種就是它的選擇范圍;

name: 自定義的插件名稱,本文中使用showNews來命名;

函數名稱:

smarty_type_name() smarty:固定位置的固定名稱; type與文件名的type一致, name與文件名中的name一致

(2)基礎知識明白了,下面就開始開發了。將以下代碼拷貝到文件中,命名為 modifier.truncate_cn.php 文件,然後將該文件拷貝到 smarty/lib/plugins/ 目錄下面(注意這個目錄形式不是固定的,個人根據自己的情況來,但必定是放在plugins目錄裡面)。

/*
*作者:http://www.phpernote.com/
*時間:2013年1月31日06:31:52
*作用:截取中文字符串
*/
function smarty_modifier_truncate_cn($string,$length=0,$ellipsis='…',$start=0){
	$string=strip_tags($string);
	$string=preg_replace('/\n/is','',$string);
	//$string=preg_replace('/ | /is','',$string);//清除字符串中的空格
	$string=preg_replace('/ /is','',$string);
	preg_match_all("/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/",$string,$string);
	if(is_array($string)&&!empty($string[0])){
		$string=implode('',$string[0]);
		if(strlen($string)<$start+1){
			return '';
		}
		preg_match_all("/./su",$string,$ar);
		$string2='';
		$tstr='';
		//www.phpernote.com
		for($i=0;isset($ar[0][$i]);$i++){
			if(strlen($tstr)<$start){
				$tstr.=$ar[0][$i];
			}else{
				if(strlen($string2)<$length+strlen($ar[0][$i])){
					$string2.=$ar[0][$i];
				}else{
					break;
				}
			}
		}
		return $string==$string2?$string2:$string2.$ellipsis;
	}else{
		$string='';
	}
	return $string;
}

(3)下面就可以使用該插件了,以後在模板裡面就可以直接使用 truncate_cn 函數來進行中文字符串的截取了,比如:{$news.content|truncate_cn:'30'}

至此,php smarty 模板的一個插件就這麼完成了,是不是非常簡單,希望你能學會並將自己的 smarty 打造成一個更為個性的模板引擎。

您可能感興趣的文章

  • smarty模板中使用php函數以及smarty模板中如何對一個變量使用多個函數
  • smarty模板中for循環的擴展插件
  • php如何清除html格式並去除文字中的空格然後截取文字
  • PHP 獲取文件擴展名(後綴名)的方法
  • Smarty臨時文件創建失敗的解決辦法
  • 用PHP函數memory_get_usage獲取當前PHP內存消耗量以實現程序的性能優化
  • jquery彈出窗口插件(兼容所有浏覽器)分享
  • linux chmod(文件或文件夾權限設定)命令參數及用法詳解

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved