跳到主要內容

發表文章

目前顯示的是有「php」標籤的文章

What is phpize

What is phpize According to the PHP official document : The phpize command is used to prepare the build environment for a PHP extension. If you need to build such an extension that from github or another code repositories, you can use  build tools to perform the build manually. 

判斷是不是json格式 - PHP

<?php /** * Check the string is json * * @param string $str * @return bool * @throws Exception if the string is not json */ function isJson ( $str ) { json_decode ( $str ); $code = json_last_error (); switch ( $code ) { case JSON_ERROR_NONE: return true ; case JSON_ERROR_DEPTH: throw new Exception( "Maximum stack depth exceeded" ); case JSON_ERROR_STATE_MISMATCH: throw new Exception( "Underflow or the modes mismatch" ); case JSON_ERROR_CTRL_CHAR: throw new Exception( "Unexpected control character found" ); case JSON_ERROR_SYNTAX: throw new Exception( "Syntax error, malformed JSON" ); case JSON_ERROR_UTF8: throw new Exception( "Malformed UTF-8 characters, possibly incorrectly encoded" ); default : throw new Exception( "U...

使用phpize

什麼是phpize?phpize是用來加入php擴充模組。 如果想在已經編譯好的php加入擴充模組,則可以使用phpize。 以下以安裝 phpredis 為範例 # 先進入到phpredis資料夾 cd phpredis # 會發現資料夾裡有個*.m4, 在執行phpize時必須要有的檔案 phpize # 會出現以下資訊 Configuring for: PHP Api Version: 20100412 Zend Module Api No: 20100525 Zend Extension Api No: 220100525 # 執行此資料夾的configure,是用來產生編譯時需要的Makefile檔案 ./configure # 接著就開始編譯並安裝 make make install 安裝後要記得在php.ini上加入extension=redis.so phpize詳細資訊到 php.net 查看

安裝composer

Composer ,其實就是作曲家(咦?!那跟php有什麼關係...。),請忽略剛剛(消音-嗶) Composer其實是個依賴管理的工具,簡言之就是,說明目前這個專案需要用到哪些套件或函式庫。所以設定需要的套件或函式庫後,執行composer會產生一個目錄(例如vendor)存放你在設定上的那些套件。 設定範例,產生一個composer.json加入zendframework { "require" : { "zendframework/zendframework" : "2.2.*" } } 那麼要如何安裝呢?首先當然得先有composer,所以我們先去下載composer 在Linux底下 curl - sS https :// getcomposer . org / installer | php 這樣就可以在當前目錄下取得composer.phar檔案 如何使用呢? # 可以看到指令列表 php composer.phar list # 或是直接執行 ./composer.phar list # 建立了composer.json,必須先進行install ./composer.phar install # 更新套件 ./composer.phar update # 顯示已加入的套件 ./composer.phar show -i 上面都是加入別人的套件,以下就來談談如何建立自己的套件。 # 在套件資料夾下執行 ./composer.phar init # 接著就會產生一連串的問題要求你輸入 Package name (<vendor>/<name>) [chuehnone/test]: Description []: Author: Minimum Stability []: License []: Define your dependencies. Would you like to define your dependencies (require) interactiv...

面試前的筆試-實作題-費氏數列

費氏數列,是F1 = F2 = 1, Fn = Fn-1+Fn-2,給以下兩個範例,請實做出程式。 func(1) = 1 func(3) = 1 2 3 5 8 <?php echo func( 1 ); echo func( 3 ); function f ( $x ){ if ( $x == 1 || $x == 2 ) return 1 ; return f( $x - 1 ) + f( $x - 2 ); } function func ( $x ){ $ans = '' ; $len = $x * 2 - 1 ; for ( $i = 1 ; $i <= $len ; $i ++ ) $ans .= f( $i + 1 ) . ' ' ; return $ans ; } ?> 今天應該是太緊張了...,看到這題我無法理解為什麼func(3) = 1 2 3 5 8,但回到房間在想起這件事情,原來是要我推理出可能的func,就馬上寫出來了。 好吧,看來今天的面試結果應該是無望了XD

使用jQuery的Plugin管理cookie

為了能在javascript上管理cookie,因此採用了jQuery的Plugin: jQuery.Cookie 如何使用呢? 上面的連結是連到github,可以看到有個README.md檔案,裡面有說明如何使用。 以下是範例內容 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 //Create session cookie: $.cookie( 'the_cookie' , 'the_value' ); //Create expiring cookie, 7 days from then: $.cookie( 'the_cookie' , 'the_value' , { expires: 7 }); //Create expiring cookie, valid across entire site: $.cookie( 'the_cookie' , 'the_value' , { expires: 7 , path: '/' }); //Read cookie: $.cookie( 'the_cookie' ); // => "the_value" $.cookie( 'not_existing' ); // => null //Delete cookie: // Returns true when cookie was found, false when no cookie was found... $.removeCookie( 'the_cookie' ); // Same path as when the cookie was written... $.removeCookie( 'the_cookie' , { path: '/' }); 這時候就可用PHP印出cookie,確認是否有成功。 1 2 3 <?php var_dump ( $_COOKIE ...

使用SimpleXML讀取XML資料 - PHP

SimpleXML是在php 5.0之後就是核心組成,所以是不需要額外安裝的。 (所以使用SimpleXML記得要檢查php版本喔!) 做個簡單的小範例,使用臺灣郵局 - 3+2碼郵遞區號XML檔 部分資料 1 2 3 4 5 6 7 8 9 <NewDataSet> <Zip32> <Zip5> 10042 </Zip5> <City> 台北市 </City> <Area> 中正區 </Area> <Road> 秀山街 </Road> <Scope> 全 </Scope> </Zip32> </NewDataSet> 這時如果我們只想建立一個陣列,就是City->Area陣列,也就可以取得['台北市'][0] = ['中正區'] 以下是範例程式碼 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <?php $address = array (); $xml = simplexml_load_file ( "test.xml" ); foreach ( $xml -> children () as $zip ){ $city = trim((string) $zip -> City ); $area = trim((string) $zip -> Area ); $address [ $city ] = array ( $area ); } var_dump ( $address ); ?> 第7行與第8行為什麼要強制轉型成string,則是因為$zip->City取出來的值是物件,所以必須得轉型,否則是無法拿來作為key使用。 輸出結果如下 1 2 3 4 5 6 7 array( 1 ) { [ "台北市" ]=> array( 1 ...

自己定義的陣列排序 - PHP

自己定義的陣列排續,不外乎就是以下三個函數: usort 、 uasort 、 uksort 以下是完整的程式碼 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 <?php /** 初始資料設定 **/ $id = array ( 0=> '#0001' , 1=> '#0002' ); //給usort測試的陣列 $u_data [ $id [ 0 ]] = array ( 'date' => '2012-08-12' , 'note' => '上海出差' ); $u_data [ $id [ 1 ]] = array ( 'date' => '2012-08-17' , 'note' => '北京出差' ); //給uasort測試的陣列 $ua_data [ $id [ 0 ]] = array ( 'date' => '2012-08-12' , 'note' => '上海出差' ); $ua_data [ $id [ 1 ]] = array ( 'date' => '2012-08-17' , 'note' => '北京出差' ); //給uksort測試的陣列 $uk_data [ $id [ 0 ]] = array ( 'date' => '2012-08-12' , 'note' => '上海出差' ); $uk_data [ $id [ 1 ]] = array ( 'date' => '2012-08-17' , 'note' => '北京出差' ); ...

input 陣列 - PHP

要如何在 input 裡面回傳陣列資料呢? 就寫了一個簡單的小範例。 以下是 php 原始碼 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <?php /** 印出Get裡面的資訊 **/ if ( ! empty ( $_GET )) print_r ( $_GET ); /** 初始資料設定 **/ $id = array ( 0 => '#0001' , 1 => '#0002' ); $data [ $id [ 0 ]] = array ( 'date' => '2012-08-12' , 'note' => '上海出差' ); $data [ $id [ 1 ]] = array ( 'date' => '2012-08-17' , 'note' => '北京出差' ); /** 印出表單資訊 **/ echo "<form method='get'>" ; foreach ( $data as $key => $row ){ echo "<input type='text' name=' { $key } [date]' value=' { $row [ 'date' ] } ' />" ; echo "<input type='text' name=' { $key } [note]' value=' { $row [ 'note' ] } ' />" ; echo "<br />" ; } echo "<input type='submit' value='送出' />" ; e...

將json物件轉成array - PHP

最近因為工作需求,所以必須弄個將json物件轉成array,在 某篇討論串 中找到如下的方法。 <?php function std_class_object_to_array ( $stdclassobject ) { $_array = is_object ( $stdclassobject ) ? get_object_vars ( $stdclassobject ) : $stdclassobject ; foreach ( $_array as $key => $value ) { $value = ( is_array ( $value ) || is_object ( $value )) ? std_class_object_to_array( $value ) : $value ; $array [ $key ] = $value ; } return $array ; } // print_r(std_class_object_to_array(json_decode($json_str))); ?> 不過找了一下資料,其實在 json_decode 時,第二個參數輸入true,就能回傳Array...。不過牽一髮動全身,就看看就好XD"

取得使用者的IP位址 - PHP

原本使用$_SERVER['REMOTE_ADDR'],卻遇到使用者在Proxy Server底下,這只會取得Proxy Server的IP,既然如此只好換個方式了。 <?php $userIP = null ; if ( ! empty ( $_SERVER [ 'HTTP_CLIENT_IP' ])){ $userIP = $_SERVER [ 'HTTP_CLIENT_IP' ]; } else if ( ! empty ( $_SERVER [ 'HTTP_X_FORWARDED_FOR' ])){ $userIP = $_SERVER [ 'HTTP_X_FORWARDED_FOR' ]; } else { $userIP = $_SERVER [ 'REMOTE_ADDR' ]; } echo $userIP ; ?> 提供給大家當作參考囉!

Windows上安裝好appserv,使用命令提示字元出現錯誤

在命令提示字元執行php時,會先出現一個視窗,視窗內容提到找不到php_mbstring.dll檔案 再出現下列錯誤訊息 C:\AppServ\www>php PHP Warning: PHP Startup: Unable to load dynamic library 'C:/AppServ\php5\ext\php_exif.dll' - 找不到指定的模組。 in Unknown on line 0 Commands:

計算程式運算時間 – PHP版

前面有寫到用Java寫一個計算程式運算時間,這次我們用PHP的版本 <?php function getMicroTime (){ list ( $usec , $sec ) = explode ( ' ' , microtime ()); return ((double) $usec + (double) $sec ); } //開始的時間 $start_time = getMicroTime(); //要計算時間的程式 doSomeThing(); //結束的時間 $end_time = getMicroTime(); echo $end_time - $start_time ; ?>