【資料來源:http://www.wujianrong.com/archives/2007/04/phppear.html

我 的Iceblog從2005年春天開始,做做停停,總算能夠顯示出來了,前台的很多功能還沒來得及做,不過後台基本上做好了。於是買了一個一百元/年的虛 擬主機,準備把程序放上去。PHP開發,一直以來我都是用PEAR+Smarty的,而且我的blog是UTF8編碼的,所以對雙字節文字的處理使用了 mbstring模塊。本來我以為把程序上載上去,數據做一下import,就萬事ok了,其實還是太大意了……

我本機的開發環境是apache2+php5+mysql; 虛擬主機是IIS6+php4+mysql; 貌似沒什麼,買空間之前我只確認了gd2模塊是否已經安裝了,因為我的blog程序的登錄部分用到了圖形驗證。忘記問mbstring的事情了,以為是默 認安裝的…… 其實也就是我能用上這個小日本發明的垃圾function,因為我在以前的項目中被日本人要求用過……  處理UTF8的中文還就必須用這個,否則字符串處理直接亂碼給你看。不過跟虛擬主機提供商交涉了一下,那個哥們比較好說話,按照我告訴他的在 php.ini裡頭把extension中的dll加載了。不過PEAR就完全沒有辦法,主機上安裝的PHP4不知道是什麼發佈版本,根本不帶PEAR, 我也不知道怎麼跟他說安裝的方法,因為的確比較麻煩,需要從pear.php.net下載之後copy到php安裝目錄,然後運行go- pear.bat,然後用pear -install DB的命令從Internet上安裝DB package,然後在php.ini中加上include_path='.;c:\php\pear'; 這才能算完。看來PEAR只能自己搞定了。

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

【資料來源:http://www.wujianrong.com/archives/2007/10/_php_html_wml_1.html

最近在做學校的 WAP 網站,其中通知公告、新聞等信息來源於原來的學校網站上的信息,因此就涉及到一個 HTML 轉化為 WML 的問題。儘管現在的 WAP 2.0 支持 XHTML 的內容顯示,但是 XHTML 語法要求比 HTML 嚴格,我們來源信息的 HTML 內容並不能保證符合 XHTML 的要求,而且 XHTML 相對於 WML 來說,內容的流量還是相對比較多一些的,另外僅支持 WAP 1.x 的手機設備也不支持 XHTML,因此為了支持更多的手機設備用戶能夠正常的瀏覽我們 WAP 網站,我們採用了 WML,而不是 XHTML。

對於新聞、通知、公告之類的信息,對手機設備用戶來說,最關心的是文字內容,因此我們的主要工作就是按照一定的格式(比如該換行分段的地方要換行分段)來從原來的 HTML 頁面裡提取出純文本信息,並將其轉化為 WML。下面的代碼演示了如何來實現這個步驟:(w3g8)

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

 轉載~~

-- PHP5新增功能說明,中譯本(一)
PHP5正式發佈
PHP5 新特性(總概)
PHP5 新函數
PHP5 對像體系
PHP5 的XML新特性

-- PHP5新增功能說明,中譯本(二)
PHP5 新特性(ZT)
SQLite in PHP

------------------------------------------------------------------------------

PHP5.0 新特性(ZT)
(一) Zend 2.0的誕生
現在的PHP4所使用的基本文法是被稱之為Zend 引擎的腳本編譯引擎。這個就是PHP4的優良機能的原因之一,是作為對PHP3的改進而生成的一種語言。大家一直認為,PHP4的性能根據當初的目標,比PHP3有了很大的提升,在網絡編程的世界裡佔據了很大的份額。

開發了Zend 引擎的Zend公司是在開發PHP4的同時,由PHP3的主要開發者Zeev Suraski和Andi Gutmans所創立的企業合併而來的。Zend的名稱是由Zeev和Andi的名字合起來組成的。Zend公司的商業模式是,持續不斷的為open source提供zend 引擎的PHP內核 (core),同時提升周邊產品開發和販賣的利益。以open source software作為基盤的商業,在世界範圍內大多數正在苦戰的企業中,算是比較好的典型例子了。

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

一、開啟【資料夾選項】視窗
‧【控制台】→【資料夾選項】→【檔案類型】頁籤
二、改變檔案圖示及預設開啟程式
‧找到要改變的檔案副檔名,右下方【進階】按鈕,跳出【編輯檔案類型】小視窗 (若無【進階】按鈕,而是【還原】按鈕,先按【還原】就會顯示【進階】按鈕)。
‧按【變更圖示】按鈕,跳出【變更圖示】小視窗→按【瀏覽】,選擇預設開啟此種副檔名的程式。
‧下方會出現圖示,選擇要顯示的圖示,按【確定】關閉【變更圖示】小視窗。

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

 轉載~~

-- PHP5新增功能說明,中譯本(一)
PHP5正式發佈
PHP5 新特性(總概)
PHP5 新函數
PHP5 對像體系
PHP5 的XML新特性

-- PHP5新增功能說明,中譯本(二)
PHP5 新特性(ZT)
SQLite in PHP

--------------------------------------------------------------------------------

期待已久的PHP5終於在當地時間7月13日正式發佈了。無論對於PHP語言本身還是PHP的用戶來講,PHP5發佈都算的上是一個里程碑式的版本。在PHP5發佈之前的各個PHP版本就以簡單的語法、豐富的庫函數以及極快的腳本解釋執行速度,贏得了許多開發者的青睞,幾乎成了*NIX平台上首選的WEB開發語言。然而,站在語言本身角度,PHP的語法,特別是OO方面的語法設計並不完善,當然這和PHP語言的作者一開始的設計目的有關。眾說周知,PHP最開始只是一個用Perl寫成的一個模板系統,其後的發展思路也是盡可能為快速開發WEB程序提供方便。大量的庫函數加入其中,而語言模型的發展則相對緩慢。雖然在PHP4中加入了面向對象的設計,但其語言模型並不完善,缺乏諸如構造函數、析構函數、抽像類(接口)、異常處理等基本元素。這極大限制了利用PHP來完成大規模應用程序的能力。

而PHP5的誕生,則從根本上改變了PHP的上述弊端。Zend II 引擎的採用,完備對像模型、改進的語法設計。終使得PHP成為一個設計完備、真正具有面向對像能力的腳本語言。我們預計,PHP5的出現,將會給整個PHP社區帶來新的一輪各種庫、應用開發改進的高峰。

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

 
一、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) 人氣()

 

MySql4.1.7密碼算法不同,你可以做如下選擇:
1)使用PHP5,用php_mysqli.dll,而不是以前的php_mysql.dll
2)將MySql的密碼改用原來的那套算法(本文介紹) 


以前一直用Mysql 3.23.44,PHP5正式發佈後,喜歡嘗鮮的我忍不住了,用了幾天PHP5,才感覺我的Mysql太弱,於是乎升級我的Mysql,心一橫,最新的Mysql 5.0.1,嘿嘿,不信數據庫弱。

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