fgetcsv 中文字亂碼排除 for PHP

2010年3月10日 尚無評論

PHP相關的函式真的是很多,而且都蠻簡單操作的
單單要讀CSV檔,只要透過fgetcsv 函式就可以處理,而且還可以把擾人的雙引號問題一併排除,不過在使用時,發現中文的處理上有一些瑕疵

上網找了一些資料,針對此問題有蠻多解法,不過還是要看一下問題發生原因

1.如果你的資料檔是big5,就要在讀入時進行iconv or mb_convert_encoding 轉成UFT-8才能使用

2.如果你都是utf-8還遇到問題,就是fgetcsv 的問題啦(我就是這個啦)

所以找到一篇有人重寫了fgetcsv ,試用後發現問題排除了,所以也分享一下解法

function __fgetcsv(&$handle, $length = null, $d = “,”, $e = '”') {
    $d = preg_quote($d);
    $e = preg_quote($e);
    $_line = “”;
    $eof=false;
    while ($eof != true) {
        $_line .= (empty ($length) ? fgets($handle) : fgets($handle, $length));
        $itemcnt = preg_match_all('/' . $e . '/', $_line, $dummy);
        if ($itemcnt % 2 == 0)
            $eof = true;
    }
   $_csv_line = preg_replace('/(?: |[ ])?$/', $d, trim($_line));

    $_csv_pattern = '/(' . $e . '[^' . $e . ']*(?:' . $e . $e . '[^' . $e . ']*)*' . $e . '|[^' . $d . ']*)' . $d . '/';
    preg_match_all($_csv_pattern, $_csv_line, $_csv_matches);
    $_csv_data = $_csv_matches[1];

    for ($_csv_i = 0; $_csv_i < count($_csv_data); $_csv_i++) {
        $_csv_data[$_csv_i] = preg_replace(“/^” . $e . “(.*)” . $e . “$/s”, “$1”, $_csv_data[$_csv_i]);
        $_csv_data[$_csv_i] = str_replace($e . $e, $e, $_csv_data[$_csv_i]);
    }
    return empty ($_line) ? false : $_csv_data;
}

經過使用上面的函式,中文字解析出來,字首不會再是亂碼了,但有點要特別注意的,如果你後方有帶很多空值的欄位,他會一併清除,這和原本的fgetcsv 不太一樣,在轉換時要特別注意。

資料來源:
http://blog.csdn.net/shilian_h/archive/2009/07/22/4371051.aspx

Categories: PHP Tags: , ,

2010分享新莊市及各界贈送花燈

2010年3月6日 尚無評論

這次新莊市贈送了二萬多盞花燈,原以為造型都一樣,後來才發覺原來各地發的燈籠都不太一樣,所以在此把我有拍到的列出與大家分享

市公所花燈(有上新聞的那隻) 超卡哇伊 福虎生風


這應該也是發的吧..? 是虎嗎?


這是體操虎


這是慈祐宮發的會唱歌的虎

後港照德宮的福(虎)帽

您有拿到其它的版本嗎? 歡迎拍張照在此一同分享

Categories: 台北新莊大小事 Tags:

貨幣金額數值轉換加上逗號「,」 for PHP

2010年3月5日 尚無評論

在PHP要顯示貨幣金額,就是有加上逗號「,」的數字是很容易的
原本以為是要使用printf 函式,結果去查了一下,有個number_format 函式就可以達到
以下為他的語法

string number_format(float number, int [decimals], string [dec_point], string [thousands_sep]);

如想看更詳細的說明,請至 http://php.net/manual/en/function.number-format.php

所以我們可以用以下指令

$return=number_format(“1000000.1234″,4,”.”,”,”);

就可以得到1,000,000.1234,看起來還蠻容易的,結果再進一步的測試,發現怪怪的
當我的值為 10000000000000.4232326 應該可以得到

10,000,000,000,000.4232

沒想到結果不對了,竟然得到如下的資料,小數的數值不對了

10,000,000,000,000.4238

多測了幾組,都發現這狀況,看來在數值大於一定位數時,就會有錯亂,應該是PHP數值的變數接受的位數有限,所以大於的數值就可能會補數來補數去的吧..反正就是亂了

所以為了這種位數超大的值,小弟寫了一個小函式,改用字串的方式處理,就可以排除此問題

function money_format($data,$n=0) {
$data1=number_format(substr($data,0,strrpos($data,”.”)==0?strlen($data):strrpos($data,”.”)));
$data2=substr( strrchr( $data, “.” ), 1 );
if($data2==0) $data3=””;
  else {
   if(strlen($data2)>$n) $data3=substr($data2,0,$n);
     else $data3=$data2;
  $data3=”.”.$data3;
  }
return $data1;
}

傳入值為$data 就是你要轉換的數值,$n就是小數點後面的位數

除了排除這個問題,在使用number_format時發現如果設定小數位數四位,如不足四數就會補零 。例如: 100000.12 會顯示  100,000.1200 ,所以小弟也順便調整,可以把後面的零給取消掉。在此提供給一樣遇到這問題的人一個方法(不一定是好方法,但一定是可行的方法)

Categories: PHP Tags: ,

2010新莊老街慶元宵

2010年3月3日 尚無評論

元宵節,算是農曆新年最後一個高潮,近年來過年的氣氛愈來愈淡,反而元宵節愈炒愈火熱。原本只有南蜂炮、北天燈還有台北燈會是大伙比較耳熟能詳的。
在台北燈會開始變成不只是台北燈會之後,各地也都開始搞起燈會及元宵活動來了

當然,新莊也不例外囉,早在過年前就得知這次的元宵節會在新莊老街遊街慶祝,還有猜燈謎、攻炮城,應該是很熱鬧才對,所以就預約這次元宵節去看看在地的元宵活動,相關活動介紹如下:

福虎生豐慶元宵 新莊市99年迎新年系列活動 1/31~3/14 – 新莊葡萄藤


新莊市迎新年系列活動

當天,約六點前往新莊老街,沿路似乎感受不到元宵節的熱鬧,心想會不會冷冷清清呀? 到了老街附近,看到警察伯伯在附近的街道進行交通管制,還在想會不會把場子搞太大,看來是我多慮了….

按著在家裡規畫的行程,第一站 6:30 來到慈祐宮排隊拿燈籠。排隊拿燈籠似乎算是回憶了。記得那時台北燈會最初幾年,也是跑去中正紀念堂和別人排隊拿燈籠,而且那個人群真是長到不行。印象中有排過三個小時的隊伍過,而後也許是長大了~呵~還是不再想那種漫長等待的排隊了,就再也沒有去排過了,現在的台北市政府燈會,有沒有可以排隊領燈籠就不得而知了~~


慈祐宮前

不過,我能確信的,新莊燈會這次有,呵~~所以怎能錯過呢!!
一到現場,排隊人龍已出現,但看了一下,不算長,新聞報導本次新莊預計要發放二萬七千多個並且在多地發放,看來慈祐宮這裡少說也會發放個三四千個跑不掉吧!  可能是時間快到了,一晃眼,我的後方人龍已經排到轉角過去了。

不過6:30分一到還未發放,仔細瞧瞧有告示是訂七點發,和DM說的6:30不一樣,這算小缺失。


用心的服務人員~要大伙試一試有無問題

一到七點,準時人龍開始動了起來,不一會就拿到燈籠了,還附了一包方塊酥呢~真是有吃又有拿~^^

咦?  怎麼和新聞說的紙燈籠不太一樣呢? 不是紙雕燈籠嗎?看來各地發送的燈籠造型都不一樣~這點立意不錯,能發不一樣的,才不會整條街都拿一樣的燈籠呀!!

慈祐宮的燈籠

不過,哈~~小小說一下內心的話,慈祐宮發的燈籠有點小醜說 哈~~最大讓我覺得不好意思的地方是,一打開就會….唱歌~~真的是會唱歌….而且還很大聲喔~~拿在路上~~哈~~哈~~真的變成萬眾之焦點!!
害我都不好意思開燈~~我只能說慈祐宮~這次你贏了….^^

拿完燈籠後,已發現老街已都是人群,不過原本活動排定的遊街活動怎麼沒有見到呢?
問了維護交通的義警,他們告知目前還在三山國王廟那呢! 所以趕緊往前去瞧瞧…
(義警告知攻炮城的碧江公園,已有很多人在那裡了~大概我們擠不進了~所以本次只好作罷)


新莊市長許炳崑裝扮成財神爺

一到了三山國王廟,看到遊行隊伍在此,第一隊人馬的似乎是政治人物,有看到市長許炳崑、市民代及縣議員黃玲林林分別扮成財神爺及巫師? 在發送糖果,一旁有在地美食攤販,只要拿發票就可以換麥芽糖、糕餅、點心等,一堆民眾手中都拿著不少發票再兌換,好不容易我從皮包中也找到一張,響應一下這個活動!!

拿發票就可以換麥芽糖、糕餅、點心

在等了一會,讓脫隊的財神爺市長歸隊後,整個遊行隊伍總算出發了,雖然遊行隊伍不像五月一日新莊大拜拜的遊街隊伍那麼長,不過各個團體都充滿了活力,與一旁觀賞的民眾互道新年快樂,忽然覺得心中無比快樂及開心


教會的小朋友

這位美麗的蛇魔女真會搶鏡頭

只要有舞獅,場子就一定熱鬧


迎娶的熱鬧隊伍


卡哇伊的小朋友們


卡哇伊的小朋友

尤其看到很多家長帶著小孩,大伙不相認識,確互道新年快樂~歡喜的迎接元宵的到來,就覺得人間充滿了愛~身在此時此地真是開心呀!!

在遊行隊伍通過後,就前往三級古蹟文昌祠,因為這裡有猜燈謎的活動
原本想所有活動都是同時間開始,會不會已經猜完了,一到現場才知還有很多謎題呢!!


文昌祠舉辨猜燈謎活動

而且,本次的謎題都是在猜新莊的里名,一堆人瘋狂舉手搶答~代表了獎品很豐富!! 

真是有夠難猜的

早知道就先抄下所有里名來此拿獎品,可惜了~~哈~! 有參與到就好~還是再回到老街去逛新莊夜市吧!!

一回到慈祐宮附近,天呀~~人怎麼超級無敵多呀~~,住在新莊二十多年,來新莊夜市應該有超過百次之多。第一次看到比假日逛士林夜市還恐怖的景象,放眼望去都是人,而且原本想去逛新莊夜市~也擠不太進去,真的很難想像遊行隊伍要如何進去老街呢~

人山人海

即然已經參與大部份的行程了,逛新莊夜市就等改天吧!! 
回到中正路上,遠方那頭不時還依稀可聽到煙火聲,不過此時的中正路人車不多空蕩蕩的,加上涼風吹拂著,似乎帶著點空虛的感覺~呵~!!真的很難想像隔一、二條街怎麼就差那麼多呢?

本次的活動,雖然沒有參與全程,但看到熱鬧的活動,與那麼多參與民眾開心的模樣,看來這次市政府的活動算是成功囉,讓我用心期待下次的元宵節。

Categories: 台北新莊大小事 Tags: ,

結婚婚禮歌曲-Joe Cocker-you are so beautiful

2010年3月1日 尚無評論

1975年發表,傳唱至今
這首歌,簡簡單單的字句,生動刻畫出父母對子女的愛,透過音符及旋律,造就了一首經典的好歌;加上原唱Joe Cocker帶有滄桑的嗓音真是令人感動

雖然後來有很多歌手及團體翻唱,但還是原唱最讓人感動

You are so beautiful   Joe Cocker

You are so beautiful to me
You are so beautiful to me
Can't you see

You're everything I hope for
You're everything I need
You are so beautiful to me
You are so beautiful to me

You are so beautiful to me
Can't you see
You're everything I hope for
You're everything I need
You are so beautiful to me

你是如此美麗   喬庫克

對我來說,你是如此美麗
在我眼中,你是如此美麗
你看不出來嗎?

你是我所有的期盼
你是我需要的一切
對我來說,你是如此美麗
在我眼中,你是如此美麗

對我來說,你是如此美麗
你看不出來嗎?
你是我所有的期盼
你是我需要的一切
在我眼中,你是如此美麗

以下是在youtobe找到的影音,網路資源蠻多的,這首歌的相關延伸介紹可以參考如下:
http://media.ipavo.com/iwantad0001/2009/11/03/34319

參考資料:
http://blog.xuite.net/vivi_2007/oldsong/17196043

Categories: 好歌 Tags: , ,
分頁: 上一頁 1 2 3 ... 21 22 23 24 25 26 27 ... 86 87 88 下一頁