首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>php>php应用>正文

PHP也可以当成Shell Script使用

http://www.oklinux.cn  2005-04-05  来源: ChinaITLab 收集整理   会员收藏  游客收藏  【 】 

  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 目录下有一个可执行档﹐档名为 php﹐将它 copy 到 /usr/local/bin 下即可。注意﹐如果档案太大﹐可以使用 strip 指令将 php 的方式将不必要的信息去除﹐这样档案就会小得多了。
  
  第一个程序
  
  开始撰写我们的第一个 PHP Shell Script 程序﹐这个例子印出 "Hello world !" :
  #!/usr/local/bin/php -q
  <?
  echo "Hello, world !";
  ?>
  
  注意到 PHP 原本是应用在网页应用的﹐因此它内定会送出 HTML 的 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<=$argc;$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;
  ?>
  
  假设将此程序命名为 filt.php3﹐如果你直接执行这个程序﹐它会一直等待你输入﹐直到你按下 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);
  
  echo $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。

上一篇:Extended CHM PHP 语法手册之 DIY   下一篇:用PHP编程开发“虚拟域名”系统


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·用PHP编程语言开发动态WAP页面
·用PHP实现GB2312和Unicode间的编码转换
·用PHP实现XML备份MySQL数据库
·PHP5学习笔记第一节面向对象编程
·如何使用动态共享对象的模式来安装PHP
·Windows服务器安装多套PHP的解决方案
·实例分析:实现一个PHP WAV接合方案
·举例说明:在PHP中运行XPath查询
·教您如何应用PHP开发出安全的应用程序
·分析PHP比ASP优秀的七个理由
·内嵌式的语言PHP 应用技巧七则
·PHP5中使用Web服务访问J2EE应用程序(2)
·PHP5中使用Web服务访问J2EE应用程序(1)
·PHP应用程序的性能优化及简要的介绍
·一步一步教你PHPMyAdmin安装图解教程
·PHP应用分页显示制作详细讲解
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Linux系统上把PHP编译进Apache静态内核
·关于PHP逗点连接符与引号问题
·php有关于正则表达式的详细说明
·通过gd库为图片添加透明水印
·第二节--PHP5 的对象模型
·用php对文件上传处理过程的进一步说明
·PHP分页显示制作详细讲解
·Linux主机重编译PHP支持GD库
·php+ImageMagick+imagick API 配置指南
·php抓取和分析
·第一节--面向对象编程
·php的预定义变量
  阅读排行
·Linux系统上把PHP编译进Apache静态内核
·WASP使用方法简介(3)
·Linux编程之提升PHP执行速度全攻略分析
·MySQL (C API)VC实例及代码下载 (1)
·Windows服务器安装多套PHP的解决方案
·Linux主机重编译PHP支持GD库
·用PHP编程语言开发动态WAP页面
·FleaPHP -- 中国人自己的PHP开发框架
·如何使用动态共享对象的模式来安装PHP
·PHP应用分页显示制作详细讲解
·用php或js获取图片大小,高宽尺寸
·教您如何应用PHP开发出安全的应用程序
·为什么PHP令人不爽(对于大型系统)
·winbinder开发php桌面程序
·用php对文件上传处理过程的进一步说明
网摘收藏: