您的位置:首页 >> Web开发 >> CGI技术 >> 正文
CGI技术 RSS
 

中文版 Perl CGI 程式写作常问问题集(五)

http://www.rdxx.com 07年11月12日 11:05 我要投稿

关键词: 中文 , 问题集 , CGI , Perl , 问题

   Q4.6: 要如何用一个 Perl 的取代指令将所有 HTML
标签从一份文件中删除?

以下这个简单的 regular expression 可用来去除 HTML 标签*:

【译者】
1. 要让这个 regular expression 跨行执行,您必须先将您的
script 由预设的按行执行模式 (line mode) 改为按段执行模
式 (paragraph mode)。您可以在指令列以:

perl -00 -we '...'

的方式;或是在 script 中以:

#!/usr/bin/perl -00



$/ = "";

的方式来设定按段执行模式。
2. 除非您需要对欲删除的 HTML 标签中的内容做进一步的处理或
利用,否则本例中最外围的一对括弧可去掉。

$line =~ s/<(([^ >]|\n)*)>//g;

详细的相关资料,请看 Tom [Christiansen] 的 striphtml 程式

(<ftp://perl.com/perl/scripts/striphtml>,这个程式同时也收录在他的
tour of perl5 regexps
(<http://perl.com/perl/all_about/regexps.html>
讲义中。


----------------------------------------------------------------------

Q4.7: 要如何知道是谁/哪台机器/哪个浏览器执行了我的程式?

您可以从 HTTP_USER_AGENT 这个环境变数得知使用者所用的浏览器。

【摘自 WWW FAQ】

您的 CGI script
可以利用五个重要的环境变数来帮忙辨识使用者的身份。

* HTTP_FROM
这个环境变数理论上应设为使用者的email地址。但是许多浏览

器完全不加以设定【即不支援】,而大部份支援这个变数的浏览器又让使
用者自由设定这个值。因此,建议读者顶多拿它来做为 email form
中回
信地址的预设值。

* REMOTE_USER 这个变数唯有当 script
安全认证的保护下执行时才会被
设定。从 AUTH_TYPE
这个变数可以知道所用的认证方法是属於哪一个类
型。REMOTE_USER
则会含有正接受认证的使用者的名字。要注意的是,
REMOTE_USER
只有在使用安全认证的时候才会被设定,而且不是所有的
servers 都支援。在 NCSA server
底下,如果认证所使用的传输方式没
有列入 access.conf 档中(也就是说,应使用 <Limit GET
POST>,而不是
仅仅用预设的 <Limit GET>),认证可能会出人意外地失败。

* REMOTE_IDENT 如果 server 能连接上客户端的 IDENT
server,它会将这
个变数设成远方使用者的身份。但由於向IDENT server
查询的动作太花
时间,大部份的 servers
都把这项功能关掉。更何况,客户端的机器是
否会回应查询,又是否会诚实以对,都是无法确定的。

* REMOTE_HOST
*
这个变数的设定值并不包括远端使用者的真实身份,但是会提供使用者正
用来连线的机器名称,只要 server
能找得出来。由於我们无法确切得知

使用者的真实身份【请看前一个环境变数的说明】,有的时候使用可确认
的位址来替代,不失为一个可行的变通方法。在 server
查不到远端的机
器名称,或者是为增加 server
的处理速度而将这个查询功能关掉的情况
下,这个变数是空的;请看底下 REMOTE_ADDRESS
一项的说明。还有,别
忘了您可能会发现所有使用同一个 proxy (代理人) server
的使用者的
机器名都变成了那台 proxy server 的名字。

* REMOTE_ADDR
这个变数的设定值并不包括远端使用者的真实身份,但是会
提供使用者正用来连线的机器的资料。REMOTE_ADDR 会包含客户端的
IP

位址,以用点隔开的十进位数字的形式来表示。由於我们无法确切得知使
用者的真实身份
[请看前一个环境变数的说明],有的时候使用可确认的
位址来替代,不失为一个可行的变通方法。和前一项 REMOTE_HOST
不同

的是,这个变数一定会被设定。还有,别忘了您可能会发现所有使用同一
个 proxy (代理人) server 的使用者的机器位址都变成了那台
proxy
server 的位址。

【摘录自 WWW FAQ 部份完】


---------------------------------------------------
共5页  第1页 第2页 第3页 第4页 第5页

 
 
标签: 中文 , 问题集 , CGI , Perl , 问题 打印本文
 
 
  热点搜索
 
 
 



Valid XHTML 1.0 Transitional
Copyright ©2005 - 2008 Rdxx.Com,All Rights Reserved
收藏本页
收藏本站