Skip to Content

★★

PHP 使用正規表示式判斷 UTF8 的漢字

 

需要用 PHP 來判斷一個字串中是否有 UTF8 漢字的正規表示式 (regular expression),不需要包含全部的漢字,只要是常用的漢字即可 (Unicode U+4E00 至 U+9FA5)。很多資料都說就是用 "/[\u4e00-\u9fa5]/" 即可判斷一個漢字,但試了底下的程式卻無法運作。
 
if (preg_match("/[\u4e00-\u9fa5]/", $string)) { ... }
 
到處找資料後,才知道要用底下的方法才行,也就是要用 \x{....} 來表示,而且要加上 /u 參數。
 
if (preg_match("/[\x{4e00}-\x{9fa5}]/u", $string)) { ... }
 

[Perl] Perl Unicode全攻略(轉)

轉載本站文章請註明,轉載自:扶凱 [ http://www.php-oa.com ]
本文鏈接: http://www.php-oa.com/2008/12/13/perl-unicode.html
轉自:http://blog.chinaunix.net/u2/70049/showart_1210487.html

耐心看完本文, 相信你今後在unicode處理上不會再有什麼問題.

本文內容適用於perl 5.8及其以上版本.

以Perl 看來, 字符串只有兩種形式. 一種是octets, 即8位序列, 也就是我們通常說的字節數組二進製文件. 另一種utf8編碼的字符串, perl管它叫string. 也就是說: Perl只認識兩種編碼: Ascii(octets)和utf8(string).

utf8 flag

那麼perl如何確定一個字符串是octets 還是utf8編碼的字符串呢? perl可沒有什麼智能, 他完全是靠字符串上的utf8 flag. 在perl內部, 字符串結構由兩部分組成: 數據和utf8 flag (標記). 比如字符串"中國"在perl內部的存儲是這樣:

utf8 flag 數據
On On

如果utf8 flag 是On 的話, perl就會把中國當成utf8字符串來處理, 如果utf8 flag 為Off, perl 就會把他當成octets 來處理. 所有字符串相關的函數包括正則表達式都會受utf8 flag 的影響. 讓我們來看個例子:

程序代碼:

use  Encode;
use  strict;

my  $str  = "中國" ;
Encode::_utf8_on( $str );
print  length ( $str ) . "\n" ;
Encode::_utf8_off( $str );
print  length ( $str ) . "\n" ;

運行結果是:

程序代碼:
2
6

這裡我們使用Encode 模塊的_utf8_on 函數和_utf8_off 函數來開關字符串"中國"的utf8 flag. 可以看到, utf8 flag 打開的時候, "中國"被當成utf8字符串處理, 所以其長度是2. utf8 flag 關閉的時候, "中國"被當成octets(字節數組)處理, 出來的長度是6(我的編輯器用的是utf8 編碼, 如果你的編輯器用的是gb2312 編碼, 那麼長度應該是4) .

再來看看正則表達式的例子:

程序代碼:

use  Encode;
use  strict;

my  $a  = "china----中國" ;
my  $b  = "china----中國" ;
Encode::_utf8_on( $a );
Encode::_utf8_off( $b );
$a  =~ s/\W+//g;
$b  =~ s/\W+//g;
print  $a , "\n" ;
print  $b , "\n" ;

運行結果:

程序代碼:
Wide character in print at unicode.pl line 10.
china中國
china

結果第一行是一條警告, 這個我們稍後再討論. 結果的第二行說明, utf8 flag 開啟的情況下, 正則表達式中的\w能夠匹配中文, 反之則不能.

如何確定一個字符串的utf8 flag 是否已開啟? 使用Encode::is_utf8($str). 這個函數並不是用來檢測一個字符串是不是utf8 編碼, 而是僅僅看看它的utf8 flag 是否開啟.

「HTML5.網路新勢力」研討會心得之行動裝置網頁

11/29 去聽了「HTML5.網路新勢力」在高雄場的研討會

 
主要的收獲有二點:
  1. 網站要升級至 HTML5 的方法及注意事項。 
  2. 網站針對行動裝置的設計方法及注意事項。
相關的簡報檔可以在這裡下載 : http://bit.ly/w3CtZF
 
先前寫過一篇是網站要升級至 HTML5 的心得,該場是黃保翕 ( Will 保哥 ) 所主講的。
 
底下則是網站針對行動裝置設計的心得整理,該場是黃忠成先生所主講的。
 

「HTML5.網路新勢力」研討會心得之 HTML5

11/29 去聽了「HTML5.網路新勢力」在高雄場的研討會

http://www.bnext.com.tw/2011webnext/index.html

主要的收獲有二點:

  1. 網站要升級至 HTML5 的方法及注意事項。
  2. 網站針對行動裝置的設計方法及注意事項。

相關的簡報檔可以在這裡下載 : http://bit.ly/w3CtZF

底下是網站要升級至 HTML5 的心得,該場是黃保翕 ( Will 保哥 ) 所主講的。

第十四世達賴喇嘛尊者關於轉世的公開聲明

 

 
文中有一段內容怪怪的:「當煩惱被斷除、遠離輪迴的束縛時,由煩惱所帶來的後世將會停止,但意識的續流仍會持續下去。這種教義是被大多數的佛教思想家所認同的。」
 
他的意思似乎是「後世」將會停止,但意識之流依然存在?
 
依理而言,證阿羅漢後,煩惱徹底止息。但若還沒有入滅,則依然有色身及意識流。如果文中是指這個情況,那就沒有問題,符合佛陀的教導。
 
但若是指色身死亡後,不再轉世輪迴,卻還有意識流,那就違背佛說了。
 
在阿含經中,佛陀明確指出斷一切煩惱的聖者,不會再轉世,五蘊徹底止息,也包含意識之流。
 
底下引用一經來說明佛陀的教導。
 
《雜阿含經》卷34:
 
佛告婆蹉:「我今問汝,隨意答我。婆蹉!猶如有人於汝前然火,汝見火然不?即於汝前火滅,汝見火滅不?」
 
婆蹉白佛:「如是,瞿曇!」
 
佛告婆蹉:「若有人問汝:『向者火然,今在何處?為東方去耶?西方、南方、北方去耶?』如是問者,汝云何說?」
 
婆蹉白佛:「瞿曇!若有來作如是問者,我當作如是答:『若有於我前然火,薪草因緣故然,若不增薪,火則永滅,不復更起,東方、南方、西方、北方去者,是則不然。』」
 
佛告婆蹉:「我亦如是說,色已斷已知,受、想、行、識已斷已知,斷其根本,如截多羅樹頭,無復生分,於未來世永不復起。若至東方,南、西、北方,是則不然,甚深廣大,無量無數永滅。」
(CBETA, T02, no. 99, p. 245, c27-p. 246, a10)
 
此經佛陀說的很明白,五蘊永斷其根本,於未來世永不復起。並沒有說還會有意識的續流。
 

底下為公開聲明的全文:

阿羅漢聖者不再輪迴

 

這二天與學長們討論到阿羅漢是否不再受生的問題,在阿含經中,這應該是很基本且重要的定義,但因為受到大乘佛法的影響,讓部份法友反過來質疑此原則,或是想要用不同的解釋來圓融阿含與大乘的說法。不過到目前為止,我還是沒看到能圓融二者的看法。也就是說,若接受大乘的教導,就違反阿含的教導。底下是我依阿含提出的一些說明:
 
阿羅漢聖者不受後有是否為不受生的部份,我舉一些經文給大家參考。我先由十二緣起談起,十二緣起其中有 …愛->取->有->生…
 
何謂「有」?
 
《雜阿含經》卷12:「三有——欲有、色有、無色有。」(CBETA, T02, no. 99, p. 85, b10)
 
何謂「生」?
 
《雜阿含經》卷12:「云何為生?若彼彼眾生,彼彼身種類一生,超越和合出生,得陰、得界、得入處、得命根,是名為生。」(CBETA, T02, no. 99, p. 85, b11-13)
 
所以阿羅漢聖眾斷盡無明,無復渴愛,無有四取,因此不再於三界存有,不再受生,這樣看起來是很明白的。
 

探討大乘批評聲聞不慈悲的問題

這幾天又把大小乘的問題翻出來談,談到了一個主題,就是大乘佛法是利他度眾,而有些大乘行者批評小乘行者(或說是聲聞行者、上座部支持者)是只顧自己的自私者,甚至有經典連阿羅漢聖者也批評,這些都是很不恰當的。

關於自私一事,先從人的角度來談,我相信不論是大乘或小乘的行者,都有自私自利的人,甚至有損人利己,那就更不應該了。但若這些並不是來自經典的教導,而是個人的行為,那就不應該批評這些人的承傳,而是針對其個人行為來討論即可。

至於部份大乘批評聲聞眾只顧解脫,這種看法有沒有問題?

我舉一段經文,表示佛陀教導聲聞眾是要自利利他,在法的教導上並沒有問題。

《雜阿含經》卷14:「比丘!當觀自利、利他、自他俱利,精勤修學」(CBETA, T02, no. 99, p. 98, b1-2)

再看一段中阿含經:

《中阿含經》卷23〈3 穢品〉:
「周那!若有不自調御,他不調御欲調御者,終無是處。
自沒溺,他沒溺欲拔出者,終無是處。
自不般涅槃,他不般涅槃令般涅槃者,終無是處。

周那!若有自調御,他不調御欲調御者,必有是處。
自不沒溺,他沒溺欲拔出者,必有是處。
自般涅槃,他不般涅槃令般涅槃者,必有是處。」
(CBETA, T01, no. 26, p. 574, b2-8)

佛陀的教導也是很清楚,若自己還沒解脫,還淹在水中,卻說要救度眾生,這是不可能的。所以聲聞行者致力在解脫道,並不能指責他們是自私的。

用科學方法證明靈界的存在

 

底下二段視頻是台大校長李嗣涔用科學實驗的方式證明靈界的存在。如果覺得一時沒時間全部看完,可以先看下集 10 分鐘之後的內容,我想那是會引起你的興趣。
 
 
早期我是看這個版本,但好像有問題,台灣看不到了。
 
上集 http://www.tudou.com/programs/view/_84s8vFRlEc/
下集 http://www.tudou.com/programs/view/_OBox7gOErw/ 
 
如果二個都看不到,可能要自己再找一找,應該會有人繼續上傳的。
 
我覺得李教授的實驗,很有科學精神,是不錯的介紹,讓大家了解在一般所認知的世界之外,還有不同的層次存在。
 
在此,我想用我所理解的佛教觀點,補充一些李教授所談論的內容,能讓大家了解一些影片的介紹與佛法之間的差別。
 
1. 影片中大概有提到有些人是因為天賦,有人是訓練,有人是練氣功,有人是修禪定……,藉著這些產生特殊能力,進而與所謂的靈界產生互動,佛教是不否定這些的存在。
 

五受陰的討論

以下是在 Facebook 和朋友們因為一段經文所引起的討論。

 

阿含辭典查詢測試

莊春江工作站 阿含辭典查詢測試
訂閱文章


about seo