目前分類:PHP (35)

瀏覽方式: 標題列表 簡短摘要
 
一、big5 編碼字串
//擷取字串前幾個字並避免截掉半個中文字,$strlen要擷取的字串長度
function CuttingStr($str,$strlen) {
      if(strlen($str) > $strlen) {
          for($i=0;$i<$strlen;$i++) {
               $ch=substr($str,$i,1);
               if(ord($ch)>127) $i++; 
         }
         $str= substr($str,0,$i);
      } 
      return $str;
}

yoonow 發表在 痞客邦 留言(0) 人氣()

 
整理一下昨天問大家關於PHP如何判斷是否為utf8編碼文件的方法,以下資料是用
google搜尋到的。
位置: http://ibtaiwan.com/ipb/index.php?showtopic=4035
由於utf8編碼有固定格式,其可能有2~4個字節,我們可以將每一個字節拆開判斷
這個函示僅判斷每個中文字的第一個字節,應該夠了。

yoonow 發表在 痞客邦 留言(0) 人氣()

 
我想大家都知道utf8轉big5,那就用iconv嗎!
不過我在使用iconv,將utf8轉big5時就出現一個問題,就是只要遇到utf8轉big5,沒有對應的big5碼的時候就有狀況了,原本以為就那個字沒出現,結果勒,是當對應不到big5碼後它是以後的通通不見了,當然這下子就不妙了。

最後我只好一個字一個字轉,然後遇到沒有對應的碼就用"■"代替,雖然損失了效能,但是卻確保了正確性。

yoonow 發表在 痞客邦 留言(0) 人氣()

使用 iconv 進行 UTF-8 <---> big5 或 UTF-8 <---> gb2312 轉碼時,常會因為查不到對應字集,而使輸出中斷。
使用 //IGNORE 可以忽略 iconv 轉碼錯誤,讓整段文字的輸出不會中斷。
但是有錯誤的地方會以@顯示。 
◎ 範例
iconv("UTF-8", "big5//IGNORE", $str);
iconv("big5","UTF-8//IGNORE",$str_big5);
iconv("UTF-8", "gb2312//IGNORE", $str);
iconv("gb2312","UTF-8//IGNORE",$str_gb);
另外也可以使用//TRANSLIT來取得替代的字碼,若無替代字可顯示,轉碼動作即停止,並產生提示警訊。但是在中文字上使用,常會因為查不到對應字集,而使輸出中斷。
◎ 範例
iconv("UTF-8", "big5//TRANSLIT", $str);
iconv("big5","UTF-8//TRANSLIT",$str_big5);
iconv("UTF-8", "gb2312//TRANSLIT", $str);
iconv("gb2312","UTF-8//TRANSLIT",$str_gb);
 //IGNORE跟//TRANSLIT是可以合併使用的。
//TRANSLIT:當轉碼查不到對應字集時,會先嘗試取得替代的字碼。例如,UTF-8歐元符號 € 嘗試轉成 BIG5 時,因為 BIG5碼並無歐元符號,於是以替代字 EUR 顯示。
//IGNORE:若無替代字可顯示時,則忽略錯誤繼續其他文字的轉碼。
◎ 範例
iconv("UTF-8", "big5//TRANSLIT//IGNORE", $str);
iconv("big5","UTF-8//TRANSLIT//IGNORE",$str_big5);
iconv("UTF-8", "gb2312//TRANSLIT//IGNORE", $str);
iconv("gb2312","UTF-8//TRANSLIT//IGNORE",$str_gb);
--------------------------------------------------------------------------------------------------------------------------------------------------------------
【延伸閱讀】:這裡有一篇關於//IGNORE跟//TRANSLIT的詳細介紹,UTF-8 轉 BIG5 碼 的問題 & 解決方法http://www.ps3w.net/modules/psbb/?op=openthr&lead=1109
----------- 以下轉載全文 -----------------
這篇文章主要探討 UTF-8 轉 BIG5 碼 的問題 並提供 幾種 解決方法 ...

UTF-8 編碼 (Unicode),又稱「統一碼」或「萬國碼」。

 關於「什麼是Unicode萬國碼」,可參考 ... 
Unicode 萬國碼 學術學會
http://unicode.org/standard/translations/t-chinese.html

維基百科
http://zh.wikipedia.org/zh-tw/UTF-8


 UTF-8 與 Unicode 請參考 ... 
【問題】請問big5, unicode and unicode UTF-8 的差異
http://www.pczone.com.tw/vbb3/thread/47/122399/2/

Unicode、UTF-8、UCS等字的意義
http://uao.cpatch.org/index.php?Unicode%E3%80%81UTF-8%E3%80%81UCS%E7%AD%89%E5%AD%97%E7%9A%84%E6%84%8F%E7%BE%A9

【教學】Big5 與 UTF-8 之差異簡述
http://www.twvbb.com/vbb/thread/30/603/


要使用 PHP 將台灣繁體中文專用編碼 BIG5 或簡體中文GB2312/GBK碼 轉成UTF-8萬國碼,都是很容易的事。

在PHP中最常用來進行各種文字編碼之間的轉換函式應該就是 iconv()

在 PHP 裏的 iconv() 函式是由 libiconv library 提供;無論是在 台灣、香港、大陸,或美國 ... 目前絕大部份的主機商應該都有開放此函式庫給虛擬主機戶使用;假如是自架主機,就要確定當初安裝編譯PHP時有 --with-iconv[=DIR] 方能支援此轉碼用函式庫。

 iconv (PHP 4 >= 4.0.5) 
用途︰
  轉換文字資料的編碼格式
用法︰
  (輸出傳回:文字形態資料) [string] iconv('來源編碼格式', '目標編碼格式', '輸入文字資料')
說明︰
  將 '輸入文字資料' 由 '來源編碼格式' 轉換為 '目標編碼格式';傳回 '輸入文字資料' 經轉換成 '目標編碼格式' 的文字資料,或假如轉換失敗的話,傳回 false


使用 iconv() 將 BIG5 編碼的繁體中文字轉換成 UTF-8 編碼通常是不會有什麼問題的 ...


但是,
假如換成是要將 UTF-8 萬國碼 中文字轉成 BIG5 碼,偶爾就會遇上「缺碼字」的問題,如下例︰

Code : * php *
<?php
$string 
iconv('UTF-8''BIG5'"歡迎光臨 INABA 依蒳貝 有機保養裝園");
echo 
$string;
// 以上程式範例將會輸出以下BIG5編碼文字 ...
// 歡迎光臨 INABA 依
?>
上例︰輸出結果,從 [蒳] 這個字開始包括以後的東西都不見啦!

這怎麼回事 ?!

因為,
許多在電腦上可以打出來的中文字,如上例的「蒳」 <<-- 這個字 實際上繁體中文BIG5碼裏頭並無此字型。

UTF-8 碼所包含的中文字比 BIG5 碼多出很多;有很多UTF-8 編碼所包含中文字,其實 BIG5 碼裏面並沒有。

所以當我們使用 iconv() 將 UTF-8 轉換為 BIG5,其中假如有 BIG5 碼裏所沒有的字,該函式的轉碼動作將會停止,並產生一個提示警訊。

 提示警訊... Notice: iconv() [function.iconv]: Detected an illegal character in input string in ...... scriptfilename.php on line (num)
註 : PHP 預設不會顯示這類 Notice (提示警訊),除非主機變更設定,或程式中以 error_report(E_ALL) 指定顯示所有的錯誤訊息。

那,怎麼辦?

iconv() 函式本身有提供幾個(不是怎麼理想的)處理方法 ...

1. 忽略BIG5缺碼字(跳過,不轉碼也,不以任何替代字顯示);

Code : * php *
$string iconv('UTF-8''BIG5//IGNORE'"歡迎光臨 INABA 依蒳貝 有機保養裝園");
echo 
$string;
// 以上程式範例將會輸出以下BIG5編碼文字 ...
// 歡迎光臨 INABA 依貝 有機保養裝園
上例︰缺碼字 [蒳] 直接被忽略過。

2. 嘗試以替代字元顯示,若無替代字可顯示,轉碼動作即停止,並產生提示警訊(此法不適用來轉中文字碼; 因為總是無可替換的字);

Code : * php *
$string iconv('UTF-8''BIG5//TRANSLIT'"歡迎光臨 INABA 依蒳貝 有機保養裝園");
echo 
$string;
// 以上程式範例將會輸出以下BIG5編碼文字 ...
// 歡迎光臨 INABA 依
上例︰遇缺碼字 [蒳] <-- 也無替代字可顯示... 即停止轉碼。

假如 缺碼字 有可替代顯示的字 ... 例 ...
Code : * php *
$string iconv('UTF-8''BIG5//TRANSLIT'"€100 == 歐幣100元");
echo 
$string;
// 以上程式範例將會輸出以下BIG5編碼文字 ...
// EUR100 == 歐幣100元
上例︰UTF-8 碼的歐元符號 € 嘗試轉成 BIG5 碼中文字符,但是 BIG5碼並無歐元符號(缺碼),於是以替代字 EUR 顯示。

3. 嘗試以替代字元顯示,若無可替代字則忽略跳過(不會產生提示警訊),繼續轉後面的文字。

Code : * php *
$string iconv('UTF-8''BIG5//TRANSLIT//IGNORE'"歡迎光臨 INABA 依蒳貝 有機保養裝園");
echo 
$string;
// 以上程式範例將會輸出以下BIG5編碼文字 ...
// 歡迎光臨 INABA 依貝 有機保養裝園
上例︰缺碼字 [蒳] <-- 也無替代字可顯示... 直接被忽略過。


//TRANSLIT
//IGNORE
//TRANSLIT//IGNORE

iconv() 提供在 目標編碼 後面加上以上三種選項標記文字的方式來處理 目標編碼 缺碼字 的問題。

從上述幾個程式範例看來,//TRANSLIT//IGNORE 是稍微比較理想 (仍然是不盡理想) 的方式。

這篇先寫到這裏。

後面再接續文來分別介紹兩種較理想的處理方法 -- 直接將缺碼字轉成 UnicodeHTML 碼,讓這些缺碼字 以 HTML(entities) 原始碼格式(例︰[&#33971;] 顯示為「」)直接顯示 Unicode 編碼字符 在網頁上 (無論網頁文字顯示是否使用Unicode/UTF-8編碼都行)。

yoonow 發表在 痞客邦 留言(0) 人氣()

 

引述

手工安裝PHP5 + MYSQL5 + IIS
手工安裝PHP5 + MYSQL5 + IIS 
#2007/01/19#
 
2007/6/24
更新下載網址。
 
STEP1:下載PHP
下載PHP 5.2.3
http://tw.php.net/distributions/php-5.2.3-Win32.zip

yoonow 發表在 痞客邦 留言(0) 人氣()

 
PHP4吹熄燈號了,PHP官方宣告於2007/12/31正式終止對PHP4的更新與支援。
於是,不能再拖了,勢必要加快對PHP5的轉移。
首先當然要先把測試環境建立起來啦。
因為原本已經是PHP4的環境,所以這個部分不再作更動,以下動作是把PHP5安裝起來,並且讓他能跟PHP4共存並行。
 

yoonow 發表在 痞客邦 留言(0) 人氣()

資料來源:http://blog.blueshop.com.tw/phpman/archive/2005/07/19/10358.aspx

讓你的PHP4和PHP5共存...

好處不多說了,:D 壞處嘛...是CGI方式的(引用官方原文:we consider installing PHP like this suicidal.)
廢話少說,直接看方法:

一,本文涉及軟件極其版本:
Windows 2000 Professional/XP
Apache 1.3.28 FOR WIN
Microsoft Internet Server Information(IIS6)
PHP 4.3.3(4.3.5), PHP 5.0.0 beta(5.0.0RC1)
MySQL 3.23.57(3.23.58)

yoonow 發表在 痞客邦 留言(0) 人氣()

一山能容二虎—Windws下基於ApachePHP4PHP5共存
  
  一山能容二虎—Windws下基於ApachePHP4PHP5共存
  在學習PHP過程中可能要同時用到PHP4PHP5,網上也有不少關於二者共存的安裝方法,大多是一個安裝在IIS下,一個安裝在Apache下。下面介紹一下本人的安裝方法,自認為比較優化,而且非常方便升級。

yoonow 發表在 痞客邦 留言(0) 人氣()

 
//-- 以下是我自己整理過的,原文列於後面 --------------------------------------------------------------
//-- 檢查來訪者搜尋引擎機器人 -----------------------------
class CkRobot{ 
 /*來訪者是否為搜尋引擎機器人
 * 傳回值 boolean true 是機器人 false 非機器人
 */

yoonow 發表在 痞客邦 留言(0) 人氣()

 
在 PHP 眾多預定義伺服器變數中,$_SERVER["REQUEST_URI"] 算是經常用到的,但是這個變數只有 apache 才支持,因此,我們需要一個更加通用的方式來獲取 REQUEST_URI 的值,本文就是結束這一問題的解決方案。

yoonow 發表在 痞客邦 留言(0) 人氣()

1、從Excel檔中讀出之日期格式為格林威治時間。

2、實際應用需轉換成本地時間,例如:台北時間比格林威治時間快8小時(28800秒),需減去八小時(28800秒)。

yoonow 發表在 痞客邦 留言(0) 人氣()

/* PHP mhash 模組的安裝程序 */

《windows 下安裝程序》

1、複製 PHP4或PHP5 套件中 dlls 目錄下已編譯好的 libmhash.dll
 ‧libmhash.dll 是必須用到的外掛模組。
 ‧將libmhash.dll複製到C:\winnt\system32。
 ‧若已經設定C:\PHP為環境變數,則將libmhash.dll複製到C:\PHP。
 

yoonow 發表在 痞客邦 留言(0) 人氣()

/* PHP mcrypt 模組的安裝程序 */

《windows 下安裝程序》

1、下載已編譯好的 libmcrypt.dll (http://ftp.emini.dk/pub/php/win32/mcrypt/)
 ‧libmcrypt.dll 是必須用到的外掛模組。
 ‧將libmcrypt.dll複製到C:\winnt\system32。
 ‧若已經設定C:\PHP為環境變數,則將libmcrypt.dll複製到C:\PHP。
 

yoonow 發表在 痞客邦 留言(1) 人氣()

/* pear的指令 */

◎、列出全部指令
pear

‧命令列視窗,輸入指令
C:>pear

yoonow 發表在 痞客邦 留言(0) 人氣()

/* pear的安裝程序 */

《windows 下安裝程序》

1、下載安裝腳本
‧http://go-pear.org/ 或是 http://pear.php.net/go-pear
‧將會在瀏覽器畫面上看到pear的安裝腳本,另存新檔,並命名為go-pear.php。

yoonow 發表在 痞客邦 留言(0) 人氣()

«12