仓酷云

标题: PHP编程:PHP也能够成Shell Script [打印本页]

作者: 不帅    时间: 2015-2-4 00:03
标题: PHP编程:PHP也能够成Shell Script
聪明的你,显然已经逐渐的开悟了,慢慢的理解了编程的概念,那么祝贺你,你已经迈出了成功的第一步。   

PHP 怎样这么红
  比来 PHP(Personal Hypertext Preprocessor) 仿佛已成了这一两年来 Linux/Unix 上最广为人人所利用的网页处置言语o它的便利、壮大功效与 OpenSource 的特征使得它正逐步腐蚀到传统 CGI 乃至是 MicroSoft ASP(Active Server Page)的市场o几近各大网站征招人才网莫不以会 PHP 作为根基前提。
  PHP 的确有这个资历可以这么红o缘由有上面数点 :
  PHP 是 OpenSource 软件o完整收费o可以自在分布o因而吸引了极多的人来利用o也由于如斯o吸引到了贸易公司为其开展更好的引擎与最好化软件(请参考 http://www.zend.com/)。
  PHP 自己十分复杂易懂o浅易的指令语法o外加一些根基的对象导向处置才能o让老手足以在最短工夫内学会。
  PHP 供应了相当多的功效o包括了数学处置、字符串处置、收集相干功效、各类数据库的撑持、影象处置功效、无为数浩瀚的开展者正为 PHP 开展林林总总的新功效o扩大性极佳。
  PHP 十分轻易与 Apache 相联合o作为 Apache 的模块来利用o设定装置上相当复杂o也由于 Apache 今朝已占有了 Web Server 全球 60% 的市场oPHP 天然而然成为 Apache 最好搭配。
  不外o此次要讲的主题不是 PHP 在网页设计上的使用o而是 PHP 在 Shell Script 上的使用o普通所知的 Shell Script 大约就是 tcsh、bash、perl 或是 python 这几类言语o我所要谈的就是将 PHP 当做 Shell Script 来利用。
  PHP 履行档的装置
  普通 PHP 作为网页处置言语都是要编译成 Apache 的模块o这里固然不么做o也因而编译起来很复杂o只需以 root 的成分停止以下举措 :
  解开 php-3.0.xx.tar.gz
  cd php
  configure
  make
  编译完以后o在 php 目次下有一个可履行档o档名为 phpo将它 copy 到 /usr/local/bin 下便可。注重o假如档案太大o可使用 strip 指令将 php 的体例将不用要的信息去除o如许档案就会小很多了。
  第一个法式
  入手下手撰写咱们的第一个 PHP Shell Script 法式o这个例子印出 "Hello world !" :
  #!/usr/local/bin/php -q
  <?
  echo "Hello, world !";
  ?>
  注重到 PHP 本来是使用在网页使用的o因而它内定会送出 HTML 的 HEADERo然而在此咱们是要将 PHP 用作 Shell Scripto"-q" 就是暗示不要送出 HEADER 的意思o你可以碰运气不加上 -q 的显示了局。
  在这个例子中o/usr/local/bin/php 是暗示要履行 /usr/local/bin/ 下的 PHPo由于咱们方才将它装在该处。echo 指令将 "Hello, world !" 印出o个中的 "" 字符是换行字符。
  注重到在将这个法式存成档案后o须将其 chmod 成为可履行属性(chmod +x 文件名)o然后才干履行喔。
  进阶利用 I
  有时分咱们需求在法式履行时o送进一些参数o好比说 ls 这个指令o前面可以加上 -l 参数oPHP Shell Script 一样也有撑持如许的用法o有两个特别的变量 : $argc 纪录着前面送入参数的个数o$argv[] 数组参数存着的则是参数的内容。好比说我如今要设计一个算两个数字总和的法式 :
  #!/usr/local/bin/php -q
  <?
  $sum=0;
  $sum=$sum+$argv[1]+$argv[2];
  echo $sum;
  ?>
  假定将此法式定名为 sum.php3o则履行 sum.php3 1 2 按下 enter 则会印出 3。
  假如要算出不特定个数的参数和o那末就得要用到 $argc 这个特别变量了 :
  #!/usr/local/bin/php -q
  <?
  $sum=0;
  for ($t=1;$t<=$argc;$t++)
  $sum=$sum+$argv[$t];
  echo $sum;
  ?>
  假定将此法式定名为 bigsum.php3o则履行 bigsum.php3 1 2 3 4 5 按下 enter 则会印出 15o履行 bigsum.php3 1 2 3 4 5 6 按下 enter 则会印出 21。
  有时分咱们需求在法式履行中输出材料o然而 PHP 本来就是用于网页设计o而网页上的材料输出天然都是用 FORM 的体例来输出o所以这将 PHP 作为 Shell Script 时成绩就来了o好在 PHP 有供应了开文件功效o而在 Linux/Uinx 之下o输出(input)这件事本来就能够用开档的体例来完成o咱们要开启的是 /dev/stdin 这个装备档(stdin 是暗示 standard input 的意思)o法式以下 :
  #!/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 的材料o法式履行到这行便会停上去守候咱们的输出o当咱们输出完按下 enter 以后o法式就会将方才咱们输出的材料给印出来了。
  进阶利用 II
  固然已可以处置输出o然而如许的功效明显仍是太复杂o没法敷衍更大的使用o好比说我需求一个功效是将一串材料流(data stream)中的 HTML 给去除o这时候便需求完全地处置输入输出转向的才能o咱们可以先设计法式以下 :
  #!/usr/local/bin/php -q
  <?
  $fp=fopen("/dev/stdin","r");
   
  while(!feof($fp)) {
  $c=fgetc($fp);
  $inputstr=$inputstr.$c;
  };
   
  fclose($fp);
   
  echo $inputstr;
  ?>
  假定将此法式定名为 filt.php3o假如你直接履行这个法式o它会一向守候你输出o直到你按下 Ctrl+D 后才会将你的输出材料给印出o咱们可以这么履行它 :
  more filt.php3 | filt.php3
  如许的做法是将 filt.php3 这个法式用 more 给秀出并转向给 filt.php3 这个法式ofilt.php3 会不休承受材料(现实上就是 filt.php3 法式代码自己)o最初将其印出。
  咱们可以在个中加上过滤 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.php3o如斯一来便完成了过滤功效o不信请拿个 HTML 档来碰运气 :
  more xxx.html | filt2.php3
  你便会看到删除 HTML TAG 的文件了。
  结论
  PHP 拿来当 Shell Script 现实上相外地好用o缘由是 PHP 自己很勤学o并且它又撑持了各类数据库o当你已常常拿 PHP 来设计你的网站以后o相对不太喜好再利用其它的 Shell Script 言语来处置其它必需非网页的部分o这时候候拿 PHP 来当作 Shell Script 的优点就会展现出来了o你可以以一向的体例来开展全部体系o而不用一下要用 PHP一下又用 Perl/Python 或是 C。

基础这个东西,有人问学php需要任何基础不?
作者: 精灵巫婆    时间: 2015-2-4 08:13
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
作者: 再见西城    时间: 2015-2-5 15:09
装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。
作者: 金色的骷髅    时间: 2015-2-12 10:07
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
作者: 兰色精灵    时间: 2015-3-3 01:06
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
作者: 蒙在股里    时间: 2015-3-7 23:33
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
作者: 若相依    时间: 2015-3-13 05:06
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
作者: 老尸    时间: 2015-3-20 11:02
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
作者: 飘飘悠悠    时间: 2015-3-25 03:08
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
作者: 山那边是海    时间: 2015-3-30 13:18
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
作者: 活着的死人    时间: 2015-4-20 15:06
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
作者: 仓酷云    时间: 2015-5-4 10:53
爱上php,他也会爱上你。
作者: 莫相离    时间: 2015-5-4 18:50
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
作者: admin    时间: 2015-6-17 20:42
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
作者: 小女巫    时间: 2015-6-21 07:09
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
作者: 简单生活    时间: 2015-6-24 06:38
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
作者: 柔情似水    时间: 2015-6-27 02:41
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
作者: 灵魂腐蚀    时间: 2015-7-8 11:17
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
作者: 透明    时间: 2015-7-8 14:41
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
作者: 不帅    时间: 2015-10-20 16:18
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2