服务器端嵌入式脚本PHP(2)

PHP和一般的解释性语言一样,不需要事先定义变量.如果你试着使用一个没有赋过值的变量,那么返回的值是空字符串.对一个变量赋值则也就同时分配了这个变量的内存.

PHP的变量名前面必须有一个 $号,这也是很多脚本语言的惯例了.
例如:
$a=1;
$b=1.0;
$c="Hello!";
都是合法的PHP语句.

PHP中的数组是这样定义的:
$a[1]="a";
$a[2]="b";
它会自动扩展,不必预先设定上限.
其实数组下标也可以是一个字符串,例如:
$a["a"]=1;
$a["b"]="Hello!";
这时它实际上是一个哈希表,就象Tcl中的所谓数组一样.

PHP中有一种类似于指针的用法,例如:
$a = "b";
$ $a = "c";
则后一句产生了一个 $b变量并给它赋值"c".

PHP变量之间的运算符和C的类似,例如也有:
+,-,*,/,%,^,&,|,&&,||,!,+=,-=,++,--等

PHP3.0定义了一个字符串相加运算符".",和Perl的一样.

PHP的变量类型可以自动转换,如果需要强制转换,做法和C的一样.它有Integer,Double,String三种简单类型.

要遍历一个哈希表,可以这样:
$i["a"] = 0;
$i["c"] = 1;
reset( $i);
for ( $j=1; $j<=count( $i); $j++)
{ $k="key( $i);" echo " $k, $i[ $k]"; echo " "; next( $i); }

PHP中的控制流语句与C几乎完全一样,也有if...else,while,for,switch,break,exit.

PHP3.0中的函数如下例:
function test( $a, $b)
{ return $a*2+ $b; }
和C差不多. 函数可以递归调用.

PHP3.0的变量作用域规定也类似于C,即缺省认为主程序中的变量是全局变量,而函数中的变量都是局部变量,即使有同名的全局变量也不使用.

如果在函数中要使用全局变量,则必须在函数头上用global语句声明,例如:

function ...{ global $a, $b; ... }

如果函数头上用static语句声明了一些变量,那么这些变量是静态的,其含义与C语言中的相同.

PHP中提供include语句,类似于C的#include.

include语句包含的可以是任意文件,它的内容将出现在最后输出的页面上.如果该文件中有括起的部分,则该部分将被PHP解释器解释执行,否则该文件的内容原封不动地送出.

它包含的文件名可以是绝对或相对路径,也可以是一个http或ftp的URL,在后一种情况下,解释器自动取来该URL内容.用这种方法甚至可以触发一个别的机器上的CGI程序.

readfile语句类似于include,但它不执行文件中的PHP程序,只把文件原封不动地送出. 这时被包含的文件中的将被浏览器理解为注释. PHP3.0中的字符串操作功能是比较多的,重要的有以下这些:

(1)echo,print,printf,sprintf
前两个函数是输出字符串.字符串中如果有变量名则被替换成其值.
后两个函数类似于C的同名函数.

(2)strchr,strlen,strtok,strrchr,strrev,strstr,strtolower,strtoupper,substr,ucfirst
这些是常用的字符串操作函数,有些和C中的同名函数意义完全一致.
strrev是把一个字符串翻转.
strtolower和strtoupper的意思应该不用解释了.
ucfirst是把字符串的第一个字符变成大写.
substr是返回字符串的一个子串,用法是:substr(字符串,头,长度).头位置是从0算起的.如果是负数,则是从尾部向前数的意思.

(3)Chr,Ord
类似于C的同名函数.

(4)explode,implode,join
这些是和数组有关的函数.
explode(字符串,分割符)返回一个将字符串在分割符处分开所产生的数组.
implode(数组,分割符)返回一个将数组各元素之间插上分割符而成的字符串.
join与implode意义相同.

(5)Chop 去掉字符串尾部的空白.

(6)htmlspecialchars
将字符串中的HTML特殊字符换成它们的名字,例如"<"变成"<".

(7)nl2br
在字符串中的每一个回车前面加上" ".

(8)AddSlashes,StripSlashes
分别给字符串中需要加上""才能用于数据库查询的字符加上和去掉"".

(9)parse_str
将"name1="value1&name2=value2&..."类型的字符串分析成一些变量."
例如: parse_str("a="1&b=2");" 生成 $a与 $b两个变量,值分别为1,2.
如果有两对名字/值的名字部分相同,则后一个的值覆盖前一个的.
如果这两对的名字尾部都有"[]",例如"a[]="1&a[]=2",则生成数组 $a,两个元素分别" 为1,2.

PHP与其它跨平台语言(也许Java不在其列. :))类似,也有正规表达式功能.

PHP3.0的正规表达式功能当然远远比不上Perl,但还是足够用的,主要函数有这么些:

(1)ereg,eregi
这是正规表达式匹配函数,前者是大小写有关匹配,后者则是无关的.
用法: ereg(正规表达式,字符串,[匹配部分数组名]);
PHP3.0中的正规表达式大体类似于grep中用的.

(2)ereg_replace,eregi_replace
这些是替换函数.
用法: ereg_replace(正规表达式,替换串,原字符串);
字符串处理函数中有一个strtr,是"翻译"函数,类似于Perl中的tr/.../.../,
用法: strtr(字符串,"从","到");
例如: strtr("aaabb","ab","cd")返回"cccdd".

(3)split
与explode函数有些类似,但这次可以在匹配某正规表达式的地方分割字符串.
用法: split(正规表达式,字符串,[取出前多少项]);

Published At
Categories with Web编程
Tagged with
comments powered by Disqus