ホームページ  >  記事  >  php教程  >  php3: クロスプラットフォームのサーバーサイド埋め込みスクリプト言語

php3: クロスプラットフォームのサーバーサイド埋め込みスクリプト言語

WBOY
WBOYオリジナル
2016-06-21 09:01:571216ブラウズ

 

    服务器端脚本技术是一种非常有用的东西,将它和客户端脚本技术联合起来应用可以 制作出功能极其强大的页面。好象很久以前有一阵子哪个版(似乎是WWW版)上讨论ASP 到了热火朝天的地步,还有人提议开个ASP版,那就是一种服务器端脚本技术。 通常用的服务器端脚本技术是CGINSAPI/ISAPI/FastCGI等等都是对它的改善和扩展。 至于用什么语言来实现CGI技术,没有任何规定,大家一般使用Perl,因为它的字符  功能比较强大。到了需要速度的场合,就用C来实现。
  

Perl/C等写的CGI脚本是一种非嵌入式的服务器端脚本,因为它是一个单独的程序,  而不是嵌在HTML文档中再通过另一个程序解释替换。

 

たとえば、次の Perl プログラム :
print "Content-type: text/htmlnn " ;
print <

Hello!gt;


HeadofHTML
print "

aaa
";
print "";
HTML ドキュメントのようですが、これは Perl が埋め込まれた HTML ドキュメントです。 その逆ではなく、手順です。 IDC/HTX、ASP などは、埋め込みサーバー側スクリプトです。次の例は、mSQL Lite スクリプトです。 >

> ; このスクリプトは、サーバー側インタープリターを通過した後、


がその出力に置き換えられます。
PHP

は、クロスプラットフォームのサーバー側スクリプト テクノロジです。これは元々、

Perl

を使用して
"Packaging " プログラムは、より多くの人が使用したため、後に開発されました。現在はバージョン 3.0 です。 C /NT を使用してください。いつでも走れる。   PHP3.0有几个平台下的编译好的版本,也有源码版本。 PHP3.0内部带了对几种常用数据库的支持,包括:Sybase,Oracle,mSQL,mySQL,PostgresQL, ODBC,dBase等。如果编译它的源码时选择对这些数据库中某几个的支持,那么必须事先 有它们的客户库。


  
Unix下编译的方法是:先解压,然后运行"./configure [选项]"(选项见README文件), 再运行"make""make install". 选项中比较重要的有:"--enable-msql=msql库路径"等数据库选项和"--enable-apache= apache源程序路径"等。 如果选择了--enable-apache,那么编译出的将是一个库文件make install将把这个库 安装到apache源程序中,然后再编译apache,可以得到支持phpapache服务器。否则, 生成的将是一个解释程序。

 
  
具体请看README文件。  Windows下,有一个安装程序,界面不太好,而且有几个文件会报告找不到,跳过就是 了。装上后要把php3目录设成网络可执行的。Readme中说要手工修改Registry,但似乎用 不着。 文档不是太好,因为3.0的文档还没写全,而2.0的文档又有些过时了。
  
安装上之后,系统应该支持对.php3.phps文件的HTTP读取了。Unix下需要修改服务 器的srm.conf文件,具体看README).


インストール中に apache サーバーが接続されている場合、速度は最速になります。 CGI プログラムとして実行した場合、速度 はほぼ同じになります。システムが FastCGI、 をサポートしている場合、インタプリタは FastCGI プログラムとしても実行できます。 Windows ISAPI をサポートするインタプリタはまだリリースされていません。

次に、最初の php3スクリプトを見てみましょう。 いつものように、こんにちは。


初めての PHP3 スクリプト<br> <br> BODY> <br> <br> エコー "こんにちは!" <br> <br> <br> HTML><br> <br> <br><br>
HTTP でアクセスできる任意のディレクトリに配置します。 hello.php3、という名前を付け、ブラウザを使用して このファイル効果はわかります(私が書く必要はありません。)    如果把它改名成hello.phps,再用NetscapeExplorer连接,可以看见加了颜色 的源码,因为解释器在遇到.phps文件时会对它进行语法加亮的处理,在里面加上很多颜色 控制符再送出.  并不需要手工指定解释器所在位置,因为如果在Apache服务器下,srm.conf里面可以 指定,Microsoft IIS PWS,Registry里面会指定.


  
从上面的例子应该很容易看出php3文件的写法.?>起来的部分就是php3 程序段,解释器对其余部分不作处理,将这些程序段执行后以其输出代替(echo语句输出一 无格式字符串,printf语句类似于C的同名函数.)  同样可以看出,php3程序虽然是文本,但客户端只能看见解释后的结果(除非你提供同名的phps文件),因此对客户端是保密的,这也是绝大部分服务器端脚本的特点.

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

例: $a=1; $b=1.0;
$c="こんにちは!
";

はすべて正当です
PHP ステートメント PHP
の配列は次のように定義されます
: $a[1]="a"; $a[2]="b"


自動的に展開されます
, 事前に上限を設定する必要はありません
実際には、配列の添字を文字列
例:: $a["a"]=1;
$a["b"]="こんにちは! ";
この時点では、実際には
Tcl、 です。 > PHP にはポインタのような使い方があります
など。 : $a = "b "; $$a = "c"; 後の文は
$b

を生成します。
PHP 変数間の演算子は C,
たとえば、 もあります: +,-,*,/,%,^,&,|,&&,||,!,+= ,-=,++,--etc 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语句声明,

たとえば、:
関数 ...{
global $a, $b; .
}
  
如果函数头上用static语句声明了一些变量,那么这些变量是静态的,  含义与C语言中的相同.  PHP中提供include语句,类似于C#include. include语句包含的可以是任意文件,它的内容将出现在最后输出的页面 .如果该文件中有括起的部分,则该部分将被PHP解释器解释执行,否则 该文件的内容原封不动地送出它包含的文件名可以是绝对或相对路径,也可以是一个httpftpURL, 在后一种情况下,解释器自动取来该URL内容.用这种方法甚至可以触发个别的 机器上的CGIProgram.readfile ステートメントは include, と似ていますが、PHPプログラム は、元のファイル をそのまま のみ送信します。 インクルードされたファイル内の ...?> は、ブラウザーによってコメント . PHP3 として理解されます。 0
には多くの文字列操作関数 があります。 で最も重要なものは次の です: (1)ech​​o 、 print、 printf, sprintf

最初の 2 つの関数は、文字列 を出力することです。文字列に変数名がある場合、 の値に置き換えられます。 後の 2 つの関数は、C の同じ名前の関数に似ています。 . (2)strchr、strlen、strtok、strrchr、strrev、strstr、strto lower、

strtoupper、substr、ucfirst これらは一般的に使用される文字列操作関数 であり、その一部は C 同じ名前の関数の意味はまったく同じです。 は、文字列 を反転します。 > および strtoupper の意味を説明する必要はありません。ucfirst は、文字列 .substr は、文字列 , の部分文字列を返します。使用法は :substr(String長さ).頭の位置は 0 . 負の数 の場合、 は末尾からカウントすることを意味します . ( 3)Chr,Ord は、同じ名前の関数 (4 ) に似ています。 explode,implode,join

これらは配列 に関連する関数です。explode(String,
separator
)
は、文字列を区切り文字で分割して生成された配列を返します。implode(Array,separator)は、配列の各要素の間に セパレータを挿入して形成された配列を返します 文字列 . joinimplode (5)Chop と同じ意味です。 文字列 の末尾の空白を削除します。
(6)htmlspecialchars
文字列の変換 HTML 内の特殊文字をその名前 に置き換えます (例: "<)。 ""<" になります。
(7)nl2br
各改行の前に "
"。 (8)AddSlashes、StripSlashes

をそれぞれ文字列に追加します。 " は、文字 "" を追加または削除することでデータベース クエリに使用できます。 (9)parse_str

分析
"name1=value1&name2=value2&..." の文字列をいくつかの変数 に変換します。 たとえば、
: parse_str("a=1&b=2");

$a $ を生成しますb2 つの変数 の値はそれぞれ 1,2 です。2 つのペアがある場合。名前/ の値に同じ名前部分 がある場合、後者の値が前の値 これら 2 つのペアの名前が "[]" で終わる場合、たとえば "a []=1&a[]=2 ", は配列 $a を生成します。 の 2 つの要素はそれぞれ 1,2 です。 .    PHP与其它跨平台语言(也许Java不在其列. :))类似,也有正规表达式功能.PHP3.0的正规表达式功能当然远远比不上Perl,但还是足够用的,主要函数有这么些:
   (1)ereg,eregi
  
这是正规表达式匹配函数,前者是大小写有关匹配,后者则是无关的.
  
用法:
   ereg(
正规表达式,字符串,[匹配部分数组名]);PHP3.0中的正规表达式大体类似于grep中用的.

(2)ereg_replace、eregi_replace
これらは置換関数 です。
使用法
: ereg_replace(
正規表現
,置換文字列,元の文字列); 文字列処理関数に strtr があり、"翻訳"関数Perltr/.../.../,
の使用法: strtr(
文字列
,"from","to") たとえば、
: strtr("aaabb","ab","cd")
"cccdd を返します。 ". (3)split

explode 関数 に似ています。 ただし、今回は正規表現と一致する文字列 を分割できます。 🎜>正規表現
文字列、[
項目の数を削除します。 🎜> ]); タイトル タイトル: php3:クロスプラットフォームのサーバーサイド組み込みスクリプト言語(8)

PHP3.0
のファイル操作関数は、一般に Cただし、いくつかの拡張機能があります

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。