首页 php教程 php手册 Shell Script方式的PHP(转) 这种方式颇有点像PERL的CGI方式。。:)

Shell Script方式的PHP(转) 这种方式颇有点像PERL的CGI方式。。:)

Jun 21, 2016 am 09:12 AM
nbsp php quot script

cgi|perl

Shell Script方式的PHP

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$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 " ---------------------- ";  
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。



本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
PHP和Python:比较两种流行的编程语言 PHP和Python:比较两种流行的编程语言 Apr 14, 2025 am 12:13 AM

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

PHP行动:现实世界中的示例和应用程序 PHP行动:现实世界中的示例和应用程序 Apr 14, 2025 am 12:19 AM

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

PHP:网络开发的关键语言 PHP:网络开发的关键语言 Apr 13, 2025 am 12:08 AM

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7

PHP的持久相关性:它还活着吗? PHP的持久相关性:它还活着吗? Apr 14, 2025 am 12:12 AM

PHP仍然具有活力,其在现代编程领域中依然占据重要地位。1)PHP的简单易学和强大社区支持使其在Web开发中广泛应用;2)其灵活性和稳定性使其在处理Web表单、数据库操作和文件处理等方面表现出色;3)PHP不断进化和优化,适用于初学者和经验丰富的开发者。

PHP与Python:了解差异 PHP与Python:了解差异 Apr 11, 2025 am 12:15 AM

PHP和Python各有优势,选择应基于项目需求。1.PHP适合web开发,语法简单,执行效率高。2.Python适用于数据科学和机器学习,语法简洁,库丰富。

PHP和Python:代码示例和比较 PHP和Python:代码示例和比较 Apr 15, 2025 am 12:07 AM

PHP和Python各有优劣,选择取决于项目需求和个人偏好。1.PHP适合快速开发和维护大型Web应用。2.Python在数据科学和机器学习领域占据主导地位。

PHP与其他语言:比较 PHP与其他语言:比较 Apr 13, 2025 am 12:19 AM

PHP适合web开发,特别是在快速开发和处理动态内容方面表现出色,但不擅长数据科学和企业级应用。与Python相比,PHP在web开发中更具优势,但在数据科学领域不如Python;与Java相比,PHP在企业级应用中表现较差,但在web开发中更灵活;与JavaScript相比,PHP在后端开发中更简洁,但在前端开发中不如JavaScript。

PHP和Python:解释了不同的范例 PHP和Python:解释了不同的范例 Apr 18, 2025 am 12:26 AM

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

See all articles