仓酷云
标题:
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