澳门新葡亰平台游戏网站PHP也可以成Shell Script

PHP 怎么这么红 最近 PHP(Personal Hypertext Preprocessor)
似乎已经成了这一两年来 Linux/Unix
上最广为大家所使用的网页处理语言它的方便、强大功能与 OpenSource
的特性使得它正逐渐侵蚀到传统 CGI 甚至是 MicroSoft ASP(Active Server
Page)的市场几乎各大网站征招人才莫不以会 PHP 作为基本条件。 PHP
确实有这个资格可以这么红原因有下面数点 : PHP 是 OpenSource
软件完全免费可以自由散布因此吸引了极多的人来使用也因为如此吸引到了商业公司为其发展更好的引擎与最佳化软件(请参考
)。 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。 国内的 PHP 风气已经相当兴盛本站
LinuxFab 便是完全以 PHP 搭配 MySQL 发展起来的事实上 PHP
的妙用还有很多有机会日后再介绍如果读者们需要 PHP
的相关信息欢迎到本站上的 PHP 论坛 参与更多讨论。

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
作为网页处理语言都是要编译成 Apache
的模块﹐这里当然不么做﹐也因此编译起来很简单﹐只要以 root
的身分进行…

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图