回首页

后一页
前一页
服务器端嵌入式脚本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(正规表达式,字符串,[取出前多少项]);


后一页
前一页

回首页