[CodeIgniter] Text 補助函數 character_limiter 不適用於中文字

CodeIgniter 裡面的 Text 補助函數,目前只適用於英文字體,不支援 utf-8 或者是簡體字體,bite 數超過2的都會出問題,當然是因為這是國外的 mvc 所以也沒有考慮到這麼週到就是了,也不是沒有辦法解決,之前就用了PHP官方網站所提供的一個函式來正確切割中文字串,就是要利用 ord 判斷 ASCII 編碼範圍,或者是可以使用 mb_substr 函式正確切割,之前寫一篇可以參考看看:[PHP] 如何切割中文標題。 底下是原本 CodeIgniter 所提供的 Text 函數
if ( ! function_exists('character_limiter'))
{
	function character_limiter($str, $n = 500, $end_char = '…')
	{
		if (strlen($str) < $n)
		{
			return $str;
		}
		
		$str = preg_replace("/\s+/", ' ', str_replace(array("\r\n", "\r", "\n"), ' ', $str));
    
		if (strlen($str) <= $n)
		{
			return $str;
		}
    
		$out = "";
		foreach (explode(' ', trim($str)) as $val)
		{
			$out .= $val.' ';
			
			if (strlen($out) >= $n)
			{
				$out = trim($out);
				return (strlen($out) == strlen($str)) ? $out : $out.$end_char;
			}		
		}
	}
}
Continue reading “[CodeIgniter] Text 補助函數 character_limiter 不適用於中文字”

[FreeBSD] 小技巧:防止 user 查詢觀看其他 user Processes

看了這篇:FreeBSD Prevent Users From Seeing Information About Processes Owned by Other Users,裡面寫到如何防止其他使用者登入 ssh 觀看到其他使用者的一些動作,平常一般使用者可以利用 ps aux 指令關看到所有 Processes 的狀況,包含了系統所有使用者,這篇就是介紹如何關閉使用者查看其他不屬於自己的 Processes,作法有兩種,底下分別介紹,效果是一樣的: 1. 寫入 /etc/sysctl.conf
echo 'security.bsd.see_other_uids=0' >> /etc/sysctl.conf
echo 'security.bsd.see_other_gids=0' >> /etc/sysctl.conf
2. 直接在 command line 執行
sysctl security.bsd.see_other_uids=0
sysctl security.bsd.see_other_gids=0
兩種效果是一樣的,當然可以查詢目前的系統狀況
sysctl -a | grep security

[CodeIgniter] 多國語言網站製作,重複 load 相同 language?

目前正在研究網站的多國語系寫法,研究了 CodeIgniter 的 Language class 用法,可以看線上中文文件:Language 類別,目前遇到一個疑問,在單一 PHP 檔案讀取,不可以同時讀取相同的 Language file 檔案,這樣是完全沒有作用的,以底下的例子來說,我在 application/language 目錄底下放了三個語系資料夾,English、zh-TW、zh-CN 這三個資料夾,裡面分別放路 vbs_lang.php 檔案,為了要區別各國的語系檔案,要分別開資料夾放入,在 CI 文件裡面都寫的很清楚,架構如下
  • application/language/English
  • application/language/zh-TW
  • application/language/zh-CN
Continue reading “[CodeIgniter] 多國語言網站製作,重複 load 相同 language?”

[VPS] 虛擬主機 Linode 720 使用心得 (一)

Linode VPS
最近正在玩 Linode 720 VPS 這個方案,整體服務感覺非常的不錯,正在測試速度跟效能,可以選擇四個地方的機房,可以參考此 連結,剛開通給我的是 Fremont, CA 機房,其實在哪個機房都是要自己去測試看看,ping 主機,或者是開 ftp 下載,http上傳下載,都要交換測試速度阿,在 Fremont, CA 那邊目前可以放 6 個 Linode 720s 服務,測試 web 的速度感覺還蠻不錯的,Linode 抓取學宿網路速度可以到達 400K/s 以上,抓取美國職棒官網 MLB TV 可以到 4MB/s 以上,學網抓 Linode 可以到 1MB/s,有圖證明: linode_wget_in (by appleboy46) Linode 抓取美國檔案 linode_01 (by appleboy46) Linode 抓取學網檔案 linode_02 (by appleboy46) 學網抓 Linode 檔案 Continue reading “[VPS] 虛擬主機 Linode 720 使用心得 (一)”

[PHP] CodeIgniter 繁體中文翻譯計畫

CideIgniter 官方中文網站 本人目前正在推廣 CodeIgniter 官方中文網站,這套 MVC 在我使用起來還蠻適合新手學習的,也非常容易上手的一套 MVC Web development 架構 ,希望推廣給台灣繁體 php web 開發人員,即使您之前沒有用過 MVC 架構,只要懂的一點 PHP 語法,基本 function 會使用,基本上就可以直接來使用 CodeIgniter,在這裡徵求對 php 或者 CodeIgniter 翻譯繁體中文有興趣的網友或者是使用者們,可以加入繁體中文的翻譯計畫,我在 github 開了CodeIgniter translation 的 repository,網址是: http://github.com/appleboy/PHP-CodeIgniter-Framework-Taiwan/tree/master Continue reading “[PHP] CodeIgniter 繁體中文翻譯計畫”

[jQuery] 日曆時間外掛 timepicker CSS/Offset 問題 | Plugins

最近把之前弄的 jQuery 日期外掛拿出來看看,筆記過兩篇:[jQuery筆記] 時間日期外掛:timepicker | jQuery Plugins[jQuery筆記] 好用的日期函式 datepicker,目前在寫活動的開始時間跟結束時間會用到這兩個外掛,網路上有找到整合日期跟時間的程式,不過效果都不是我很喜歡,因為在時間方面想要設定可以分隔5分鐘,或者是10分鐘間隔,有沒有網友可以提供更好的 jQuery 外掛,可以將日曆跟時間整合在一起,用單一 input 欄位就可以控制,也可以設定間隔時間,目前是搭配這兩個外掛同時使用,也可以達到同樣效果。 timepicker 作者網站,愈到了一個問題,只要網頁裡面有用到 jQuery Showhide 都會讓 timepicker 程式判斷 CSS/offset 發生錯誤,導致功能無法顯示在正確的地方,會跑到網頁其他位置,解決方法就是當滑鼠 click input 欄位時,再去呼叫取得目前 offset 的位置。
var elmOffset = $(elm).offset();
$tpDiv.appendTo('body').css({'top':elmOffset.top + 'px', 'left':elmOffset.left+ 'px'}).hide();
這樣就可以正確顯示在 input 下方,連這個都可以遇到地雷 XD

[PHP] Class: RSS Generator 產生器

最近在寫新聞系統,需要 RSS 線上訂閱的功能,所以在 PHP Classes 找到了 RSS Generator 產生器,這產生器使用起來也相當方便,在測試的時候剛好遇到一個問題,就是要對內容做 escape 的動作,避免 RSS 爛掉,看到 gslin 大的發表一篇 WordPress 的 exporter 裡面寫到 WordPress 的產生 xml 格式沒有經過 escape 造成程式亂掉『Exporter does not escape url』,當然解決方法也很容易,那就是用 htmlspecialchars,避免 url 裡面帶有 & 符號。 解決方法很容易,如下就可以了
link = htmlentities($url, ENT_QUOTES);
?>