Tag: php
-
Bookmark: PHP Markdown
PHP Markdown 是一款以 PHP 為基礎的 Markdown 語言轉換器。Markdown 是一種輕量級的標記語言,透過簡單易懂的語法來編寫文件,主要用於技術性文件,Markdown 轉換有多種語言的實作,這款便是以 PHP 來做轉換。 http://michelf.com/projects/php-markdown/ 這個套件分為標準和 Extra 版,後者多了更多功能。不過就實務上來說,筆者還在尋找 JavaScript 版本的 Markdown Engine,這樣才能做到所見所得的即時轉換。
-
Bookmark: PHP QR Code
用 PHP GD2 產生 QR Code 的 Library,簡單易用,有多種參數可以設置。採用 LGPL 授權,使用上也比較有彈性。 http://phpqrcode.sourceforge.net/
-
PHP: Reading $_GET variable
在 PHP 環境下要取得 GET 變數的內容只要用 $_GET 就可以取得,不過在 CodeIgniter Framework 或其他特殊環境下,$_GET 預設是被關掉的時候,想要正常使用 GET (如 AJAX) 時就得費一點點工夫了。 <?php $url_segs = parse_url($_SERVER[‘REQUEST_URI’]); parse_str($url_segs[‘query’], $_GET); // urldecode automatically print_r($_GET); // 印出 $_GET 內容 ?> 完工,就醬。 updated Feb 1, 2012 後來才注意到 CI 的 config.php 大約在 157 行的地方有一行設定 $config[‘allow_get_array’] = TRUE; 預設打開了 $_GET,不需要用上述的方法,改用 $this->input->get() 即可取得 $_GET 內容。
-
PHP: Fibonacci Sequence
Finbonacci Sequence (費氏數列、費伯納數列) 對於寫程式的人來說應該不陌生。數學上的費氏數列是以遞迴方式定義的,如下 F0 = 0, F1 = 1 時,Fn = Fn-1 + Fn-2 用文字來說,就是費氏數列由 0 和 1 開始,之後的費氏數列就由之前的兩數相加。前幾個數字是 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377….. 用遞迴方式的標準寫法是…
-
PHP: Using explode() with seperator "\n"
有個以 PHP 開發的案子在測試階段回報有 bug,雖然兇手不是我,但還是去了解一下。原來的程式是讓使用者輸入多個 Youtube 影片網址,然後由程式取出每一支影片的 uid,封裝成陣列後回傳。之後的程式會取出 uid,然後在網站上 show 出 Youtube 影片。不過當使用者輸出多支影片的網址後,只有最後一支影片會出現,前面的都錯誤了。 原程式是這樣寫的… <?php //使用者輸入的影片網址. http://後面空一格是避免Wordpress把影片顯示出來 $youtube = <<<EOF http:// www.youtube.com/watch?v=SAIEamakLoY http:// www.youtube.com/watch?v=MhVp9gcxLJY http:// www.youtube.com/watch?v=OxzucwjFEEs EOF; function get_youtube_hash($youtube){ $hash = array(); $youtube = explode(“\n”, $youtube); foreach($youtube as $y){ $youtube_qs = parse_url($y, PHP_URL_QUERY); $youtube_qv = explode(‘&’, $youtube_qs); foreach($youtube_qv as $key => $value){ list($k, $v) = explode(‘=’,…
-
How to Convert String to Slug
在這個 SEO 當道的年代,簡單易懂的現代網址已經是基本常識了。根據 W3C 的網址規定,合法字元僅有 A – Z, a – z, 0 – 9, -, ., _, ~, :, /, ?, #, [, ], @, !, $, &, ‘, (, ), *, +, ,, ; = ,而且橫線 ( – ) 之後都是有特別意義的保留字,所以過去常看到亂七八糟的亂碼網址,像是本文的標題不處理的話就變…. How%20to%40%20Convert%20String%20to%20Slug 雖然對電腦來說沒什麼差別,但是對人類來說卻是難以理解、難以記憶的無意義片段。
-
CodeIgniter: How To Set date.timezone
最近寫了幾支程式,在檢查時間的時候發現都慢了八小時,才想到應該是沒設定時區,PHP 的預設時區是 GMT 或 UTC,而台灣是 GMT +8,所以系統慢了八小時。 在不改 php.ini 的前提下,可以將時區設定寫在 CodeIgniter 的 index.php 裡面。 // Insert code before this line, // require_once BASEPATH.’codeigniter/CodeIgniter’.EXT; if( ! ini_get(‘date.timezone’) ) { date_default_timezone_set(“Asia/Taipei”); } 這樣就完成 CI 的時區設定了。這段設定要放在 require_once BASEPATH.’codeigniter/CodeIgniter’.EXT; 之前。
-
CodeIgniter: Use Ellipsize Helper For Custom Encoding
CodeIgniter 的 Text Helper 裡有一個 function ellipsize(),用來截斷過長的文字,同時可以指定顯示長度、截斷位置,功能上相當不錯。 殘念的是這支 function 並不支援雙位元文字或其他特殊編碼的文字,拿中文字去切非常容易出現亂碼。所以決定幫這支程式做點小小的修改,讓它可以指定編碼,拿來截斷中文也沒問題。 function ellipsize($codepage = ‘UTF-8’, $str, $max_length, $position = 1, $ellipsis = ‘…’) { // Strip tags $str = trim(strip_tags($str)); // Is the string long enough to ellipsize? if (mb_strlen($str, $codepage) <= $max_length) { return $str; } $beg = mb_substr($str, 0, floor($max_length * $position), $codepage); $position…
-
PHP mail function 如何避免亂碼?
又是一個工作上碰到的問題,需要寫一個簡單的 email 發送功能。雖然是基本功能,不過常見的作法還是藉由 PHPMailer Library 來達成。不過這個案子因為寄信頻率很低,想說用 PHP 內建的 mail() 就可以處理了。但是人算不如天算,怎知 mail() 成功了,但是卻是一堆亂碼,標題、寄件人欄位都是亂碼….. 囧 經過一番 Google Search 的奮戰,找到一個很 tricky 的解決方法。將會出現亂碼的文字用以下方式處理…. “=?UTF-8?B?”.base64_encode(” 會出現亂碼的文字 “).”?=” 這樣用 GMAIL 收到信的時候就可以看到正常的文字了。 mail function 範例如下… function sendMail($recipient){ $subject = “=?UTF-8?B?”.base64_encode(“信件標題”).”?=”; $headers = “MIME-Version: 1.0\r\n”; $headers .= “Content-type: text/html; charset=UTF-8\r\n”; $headers .= “From: “.”=?UTF-8?B?”.base64_encode(“寄件人 “).”?=”; $headers .= “<sender@email.com>”; $message = ‘<p><font size=”3″ face=”新細明體”>信件內文</font></p>…