欢迎 chinavb 加入本站!
 免费注册  用户登陆  汇款方式  汇款确认  产品报价  联系我们  帮助中心
加入收藏
设为首页
会员体系
申请VIP
网站首页 光盘超市 软件下载 技术文章 专题 用户中心 VIP会员 技术论坛 网站留言 娱乐中心 卓越资源
今天是:2009年01月08日 星期四  您现在位于: 首页 → 技术文章 → PHP也可以当成Shell...
   PHP也可以当成Shell Script使用
作者:dbonline.cn  出处:linux.chinaunix.net  更新时间: 2007年02月07日 

  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 的文件了。

 (本文已被浏览 2504 次)
 发布人:sdccf
 → 推荐给我的好友
上篇文章:Linux LVM 的使用详解
下篇文章:在SuSe Linux下安装ADSL
 相关文章:
一个awk应用的小例子 SCO的ksh环境下控制字符串输入的shell脚本
shell编程基础十二篇 Bash使用详解
shell中设置密码 执行加密脚本的实现
PHPMyadmin配置文件详解 实现基于php和MySQL的动态树型菜单
用C语言操作MySQL数据库 fish-用户友好的 Shell
Colourshell:给 shell 命令着色 个性化你的shell提示符
使用GeoIP和PHP构建一个简单的MySQL地理数据库 PHP 和 MySQL 开发的 8 个技巧
PHP 会话 (Session) 使用入门 用php调用ping命令
用php压缩解压缩文件 SCO OpenServer下的系统管理shell
MySQL常用命令八(密码的修改方法) freebsd中shell环境的设定

相关搜索
查看百度中关于PHP也可以当成Shell Script使用的更多内容
查看google中关于PHP也可以当成Shell Script使用的更多内容
   文章分类
操作系统 |
SCO_UNIX  Sun_Solaris  IBM_AIX  HP_UX  Linux  BSD  Tru64_UNIX 
通用UNIX知识  Windows  Minix 
程序设计 |
Shell编程  C/C++  汇编  PHP  JAVA  Perl  Python 
ASP/HTML  XML  中间件 
数据库 |
Oracle  Informix  Sybase  Fox  DB2  SQL  MySQL 
PostgreSQL 
网络应用 |
网络应用 
计算机硬件 |
计算机主机  打印机  路由器  交换机  终端  磁带机  MO 
刻录机  终端服务器  调制解调器 
   文章评论
  → 评论内容 (点击查看)   共0条评论,每页显示5条评论   浏览所有评论
(没有相关评论)
  → 发表我的评论
您的姓名: 您的Email:
评论内容:
250字内
发表评论:      发表评论须知 →
  • 尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法;
  • 本站有权保留或删除您发表的任何评论内容;
  • 关于我们 ┋  网站留言 ┋  网站地图 ┋  友情链接 ┋  与我在线 ┋  汇款确认 ┋  管理 ┋  TOP
    Unix爱好者家园  http://www.unix-cd.com/
    联系我们:sdccf@163.com
    腾讯QQ: 7644599
    备案序号:鲁ICP备05000455号
    Copyright (c) 2001-2008 Unix-cd.com. All Rights Reserved.