首頁 > 後端開發 > php教程 > PHP也可以當成Shell Script_PHP教程

PHP也可以當成Shell Script_PHP教程

WBOY
發布: 2016-07-21 16:10:46
原創
777 人瀏覽過


PHP 怎麼這麼紅
  最近PHP(Personal Hypertext Preprocessor) 似乎已經成了這一兩年來Linux/Unix 上最廣為大家所使用的網頁處理語言﹐它的方便、強大功能與OpenSource 的特性使得它正逐漸侵蝕到傳統CGI 甚至是MicroSoft ASP(Active Server Page)的市場﹐幾乎各大網站徵招人才莫不以會PHP 作為基本條件。
  PHP 確實有這個資格可以這麼紅﹐原因有下面數點:
  PHP 是OpenSource 軟體﹐完全免費﹐可以自由散佈﹐因此吸引了極多的人來使用﹐也因為如此﹐吸引到了商業本公司為其發展更好的引擎與優化軟體(請參考http://www.zend.com/)。
  PHP 本身非常簡單易懂﹐淺顯的指令語法﹐外加一些基本的物件導向處理能力﹐讓新手足以在最短時間內學會。
  PHP 提供了相當多的功能﹐包含了數學處理、字串處理、網路相關功能、各種資料庫的支援、影像處理功能、有為數眾多的發展者正為PHP 發展各式各樣的新功能﹐擴充性極佳。
  PHP 非常容易與 Apache 結合﹐作為 Apache 的模組來使用﹐設定安裝上相當簡單﹐也因為 Apache 目前已經佔據了 Web Server 全球 60% 的市場﹐PHP 自然而然成為 Apache 最佳搭配。
  不過﹐這次要講的主題不是PHP 在網頁設計上的應用﹐而是PHP 在Shell Script 上的應用﹐一般所知的Shell Script 大約就是tcsh、bash、perl 或python 這類語言﹐我所要談的就是將PHP 當成Shell Script 來使用。
  PHP 執行檔的安裝
  一般PHP 作為網頁處理語言都是要編譯成Apache 的模組﹐這裡當然不麼做﹐也因此編譯起來很簡單﹐只要以root 的身份進行如下動作:
  解開php-3.0.xx.tar.gz
  cd php
  configure
  make
  編譯後﹐將在php 目錄下有一個可執行檔﹐名稱為它。到/usr/local/bin 下即可。注意﹐如果檔案太大﹐可以使用 strip 指令將 php 的方式將不必要的資訊移除﹐這樣檔案就會小得多了。
  第一個程式
  開始寫我們的第一個PHP Shell Script 程式﹐這個範例印出"Hello world !" :
  #!/usr/local/bin/php -q

  echo "Hello, world !";
  ?>
  注意到PHP 原本是應用在網頁應用的﹐因此它內定會用HTHTML 的HEADER﹐但是在此送出我們是要將PHP 用作Shell Script﹐"-q" 就是表示不要送HEADER 的意思﹐你可以試試看看不加上-q 的顯示結果。
  在這個例子中﹐/usr/local/bin/php 是表示要執行 /usr/local/bin/ 下的 PHP﹐因為我們剛才將它裝在該處。 echo 指令將 "Hello, world !" 印出﹐其中的 "" 字元是換行字元。
  注意到在將這個程式存成檔案後﹐須將其 chmod 成為可執行屬性(chmod x 檔案名稱)﹐然後才能執行喔。
  進階使用I
  有時候我們需要在程式執行時﹐送進一些參數﹐比如說ls 這個指令﹐後面可以加上-l 參數﹐PHP Shell Script 一樣也有支援這樣的用法﹐有兩用個特殊的變數: $argc 記錄著後面送入參數的個數﹐$argv[] 陣列參數存的則是參數的內容。例如我現在要設計一個算兩個數字總和的程式:
  #!/usr/local/bin/php -q
  
  $sum=0;
  $sum=$ sum $argv[1] $argv[2];
  echo $sum;
  ?>
  假設將此程式命名為sum.php3﹐則執行sum.php3 1 2 按下enter 則會印出3。
  如果要算出不特定個數的參數和﹐那麼就得要用到$argc 這個特殊變數了:
  #!/usr/local/bin/php -q
  
$sum=0;
  for ($t=1;$t  $sum=$sum $argv[$t];
  echo $sum
; ?>
  假設將此程式命名為bigsum.php3﹐則執行bigsum.php3 1 2 3 4 5 按enter 則會印出15﹐執行bigsum.php3 1 2 3 4 5 6 按下enter 則會印出21。
  有時候我們需要在程式執行中輸入資料﹐但是PHP 原本就是用於網頁設計﹐而網頁上的資料輸入自然都是用FORM 的方式來輸入﹐所以這將PHP 作為Shell Script 時問題就來了﹐好在PHP 有提供了開檔功能﹐而在Linux/Uinx 之下﹐輸入(input)這件事原本就可以用開檔的方式來完成﹐我們要開啟的是/dev/stdin 這個設備檔(stdin 是表示standard input 的意思)﹐程式如下:
  #!/usr/local/bin/php -q
  
  $fp=fopen("/dev/stdin","r ");
  $inputstr=fgets($fp,100);
  fclose($fp);

  echo "n--------------- -------n";
  echo $inputstr;
  ?>
  其中的fgets($fp,100) 是指從$fp 這個檔案(也就是"/dev/stdin" )中讀取出100 個byte 的資料﹐程式執行到這行便會停下來等待我們的輸入﹐當我們輸入完按下enter 之後﹐程式就會將剛才我們輸入的資料給印出來了。
  進階使用II
  雖然已經可以處理輸入﹐但是這樣的功能顯然還是太簡單﹐無法應付更大的應用﹐比如說我需要一個功能是將一串資料流(data stream)中的HTML 給予去除﹐這時需要完整處理輸出輸入轉向的能力﹐我們可以先設計程序如下:
  #!/usr/local/bin/php -q
  
  $fp= fopen("/dev/stdin","r");

  while(!feof($fp)) {
  $c=fgetc($fp);
  $inputstr=$inputstr .$c;
  };

  fclose($fp);

  echo $inputstr;
  ?> 你直接執行這個程式﹐它會一直等你輸入﹐直到你按下Ctrl D 後才會將你的輸入資料給印出﹐我們可以這麼執行它:
  more filt.php3 | filt.php3
  這樣的做法是將filt.php3 這個程式用more 給秀出並轉向給filt.php3 這個程式﹐filt.php3 會不斷接受資料(事實上就是filt.php3 程式碼本身)﹐最後將其印出。
  我們可以在其中加上過濾HTML 的功能:
  #!/usr/local/bin/php -q
  
  $fp=fopen("/dev/stdin"," r");

  while(!feof($fp)) {
  $c=fgetc($fp);
  $inputstr=$inputstr.$c;
; 🎜>
  fclose($fp);

  $inputstr=ereg_replace("]*)>","",$inputstr);

  ?>
  假設將此程式命名為filt2.php3﹐如此一來便完成了過濾功能﹐不信請拿個HTML 檔來試試看:
  more xxx.html | filt2.php3
  你便會看到刪除了HTML TAG 的檔案了。
  結論
  PHP 拿來當Shell Script 事實上相當地好用﹐原因是PHP 本身很好學﹐而且它又支持了各種數據庫﹐當你已經經常拿PHP 來設計你的網站之後﹐絕對不太喜歡再使用其它的Shell Script 語言來處理其它必須非網頁的部份﹐這時候拿PHP 來當做Shell Script 的好處就會顯現出來了﹐你可以以一貫的方式來發展整個系統﹐而不必一下要用PHP一下再用Perl/Python 或是C。
  國內的PHP 風氣已經相當興盛﹐本站LinuxFab 便是完全以PHP 搭配MySQL 發展起來的﹐事實上PHP 的妙用還有很多歡迎﹐有機會日後再介紹﹐如果讀者們需要PHP 的相關信息﹐歡迎到本站上的PHP 論壇參與更多討論。 (出處:Viphot)

http://www.bkjia.com/PHPjc/314161.html

truehttp: //www.bkjia.com/PHPjc/314161.htmlTechArticlePHP 怎麼這麼紅最近PHP(Personal Hypertext Preprocessor) 似乎已經成了這一兩年來Linux/Unix 上最廣為大家所使用的網頁處理語言﹐它的方便、強大功...
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板