A. php中的正則表達式為什麼會和Perl、POSIX扯上關系
一直以來,Perl被視為正則表達式的標准,它提供一種全面的正則表達式語言。php就按這個Perl正則標准來制定的。
在PHP手冊里Perl
兼容正則表達式函數的第一句就是這樣說的:「本類函數中所使用的模式極其類似
Perl。」
注意是「極其類似」。
Perl和POSIX很多都是相同的,因為Perl是由POSIX派生來的。
所以PHP都可以使用兩套正則表達式規則,一是POSIX
1003.2定義的正則;二是PCRE庫提供PERL兼容正則。
B. tomcat下,怎麼安裝配置php (linux系統)
一、安裝和系統環境變數設置
1、我使用的PHP為php-5.4.31,不用5.5以上版本的原因是,因為他們都是使用VC11編譯的,需要一個DLL,win7及一下都不支持。下載VC9編譯的PHP 5.4(5.4.31) for X86的已編譯版本。我的安裝目錄是D:\Application\php-5.4.31,
將安裝後的路徑設置到系統環境變數path中。
2、perl直接下載安裝即可(會自動配置環境變數,不用操心)。
3、Tomcat用的是7.0.41版本。很多文檔要求將server/lib下servlets-cgi改名為servlets-cgi.jar。從6版本以後,好像就沒有server目錄,內部已經自動支持cgi,只需要進行配置即可。
Tomcat需要JDK 1.6以上,所以JDK需要先安裝好。
二、配置步驟:
1、到D:\Application\php-5.4.31目錄下
將php.ini-development復制一份同一目錄下,命名為php.ini
<1>設置extension_dir參數:
extension_dir="D:\Application\php-5.4.31\ext"
<1>設置cgi.force_redirect參數:
cgi.force_redirect = 0
2、打開Tomcat的conf下的context.xml文件
給Context增加屬性privileged="true",修改後的Context元素屬性如下所示:
<Context privileged="true">
3、打開Tomcat的conf下的web.xml文件
在servlet和servlet-mapping之間增加如下的內容:(注意,注釋不能放到配置項裡面,否則啟動報錯)
<!—Add to support PHP & Perl -->
<servlet>
<servlet-name>cgi</servlet-name>
<servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>cgiPathPrefix</param-name>
<param-value>WEB-INF/cgi-bin</param-value>
</init-param>
<load-on-startup>5</load-on-startup>
</servlet>
<servlet>
<servlet-name>php</servlet-name>
<servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
<init-param>
<param-name>clientInputTimeout</param-name>
<param-value>200</www.gzlij.com param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>executable</param-name>
<param-value>D:\Application\php-5.4.31\php-cgi.exe</param-value>
</init-param>
<init-param>
<param-name>passShellEnvironment</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>cgiPathPrefix</param-name>
<param-value>WEB-INF/php-bin</param-value>
</init-param>
<load-on-startup>5</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>php</servlet-name>
<url-pattern>/php-bin/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>cgi</servlet-name>
<url-pattern>/cgi-bin/*</url-pattern>
</servlet-mapping>
備註:
1、我們配製了兩個servlet,分別是php、CGI
2、在servlet參數中
<param-name>executable</param-name>
<param-value>D:\Application\php-5.4.31\php-cgi.exe</param-value>
指向CGI程序執行器,其實就一可被調用的可執行程序。(這里帶全路徑,好像不帶路徑也可以,因為path環境變數里已經配置了),記住不要用php.exe。
如果沒有配置,預設就是調用perl執行程序。
3、腳本存放路徑
<param-name>cgiPathPrefix</param-name>
<param-value>WEB-INF/cgi-bin</param-value>
這里將perl腳本配置的是指向webapps/web-inf/cgi-bin目錄下。
<param-name>cgiPathPrefix</param-name>
<param-value>WEB-INF/php-bin</param-value>
PHP的腳本指向的是webapps/web-inf/php-bin目錄下。
4、資源URL路徑映射。
這里如果請求的資源是/php-bin/*則,指向php服務程序,如果是/cgi-bin/*則指向cgi服務程序。
<servlet-mapping>
<servlet-name>php</servlet-name>
<url-pattern>/php-bin/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>cgi</servlet-name>
<url-pattern>/cgi-bin/*</url-pattern>
</servlet-mapping>
三、測試
1、分別將如下的test.php和test.cgi測試程序放到webapps\ROOT\WEB-INF\php-bin和webapps\ROOT\WEB-INF\cgi-bin目錄下。
其中test.php內容如下:
<?php phpinfo();?>
Test.cgi內容如下:
# filename: test1.cgi
print "Content-type: text/html\n\n";
print "Hello, world!\n"
2、重新啟動tomcat。
瀏覽器地址欄輸入:http://127.0.0.1:8080/php-bin/test.php
如果顯示如下,則說明PHP設置正確。
<?php
echo "hello World!\n\n";
echo "hello World!\n\n";
echo "hello World!\n\n";
?>
針對上面的程序,如果配置中使用的是PHP.exe,則只能現實兩行「hello world!」, 第一行總是莫名其妙地丟失。而且對php-info()函數,第一行也會丟失。
(很多文檔中都提到這個問題,其實就是因為用錯了程序。)
瀏覽器地址欄輸入:http://127.0.0.1:8080/cgi-bin/test.cgi
如果顯示「hello world!」,則說明cgi設置正確。
C. Perl是什麼
發明perl的larry wall就說過:「perl可能不好看或者不好聞,但是它能完成任務」。 perl是文本處理語言,它最初就是為了這個目的設計的。 perl是網路編程語言,它內置了socket/client-server協議。 perl是系統管理語言,全球網路很多伺服器上就運行著它的腳本。很多時候是單行的腳本。 perl是web腳本編寫語言。至今它仍然是最流行的幾種web腳本編寫語言之一。 perl還可以: 用perl生成代碼 用perl(調用tk)編寫gui程序。 在c/c++中進行perl編程,在perl中進行c/c++編程 用perl過濾郵件 用perl數據倉庫編程 在web上進行搜索 有人說perl無所不能。 ----------------------------------------------------------------------------------------------------- 我個人覺得perl的文本處理能力是無以替代的。它的正則表達式功能之強大是其他編程語言無法達到的。 即使微軟的jscript/vbscript在正則表達式這項功能努力仿照和追趕perl,但仍然有很大的差距。 perl裡面的哈希結構也是一個十分有趣的東西,vbscript裡面對應的是dictionary,但是dictionary有欠直觀。 如果你對照一下perl和php,會發現兩者程序之間有很多類似的地方,php在產生的時候受到了perl很多的影響, 說php來源於perl也不為過。 perl甚至和vbscript/jscript一樣可以編寫asp程序。但同時,perl又不僅僅只有web腳本的功能。。。。但我 們很多web程序員用asp/php/jsp在編寫基於web的聊天室,用隱藏楨刷新聊天內容的老土辦法的時候,實際perl 寫的基於socket的chat server程序早就存在了。你甚至不需要用c/c++來做這些復雜的事情,一個perl一百行 代碼就可以做到了。 perl一直以來是一個免費的語言。你不用任何費用就可以獲得perl世界裡面的代碼包括perl本身。perl不是由 某個公司大力推廣而得到發展的,正如java那樣。perl用它自身的力量來發展自己。當我們發現perl的開發調 試工具就可以用perl來寫作,就不能不為它的神奇而感動。perl的世界是一個真正的自由的世界。 更多的時候,我覺得看一下perl,也是有很多地方值得借鑒的。有一些編程的方法就可以學過來,然後放到你所
D. phper、perl和php各是什麼意思啊!
簡單的說,phper指的是php開發人員,指的是人,而perl和php都是腳本語言,用於編程的。
perl:簡而言之,它像C語言一樣強大,像awk、sed等腳本描述語言一樣方便,被稱之為「一種擁有各種語言功能的夢幻腳本語言"。
php:外文名:PHP: Hypertext Preprocessor,中文名:「超文本預處理器」,是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標准通用標記語言下的一個應用)文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。
phper:php程序員的一種別稱,取自php編程語言,加英文er作後綴,同時phper也是一本雜志,是由開源社區門戶PHPChina與網上一些PHP技術愛好者共同製作的電子刊物,雜志的內容完全由網上的PHPer們積極提供。在發行致辭中,《PHPer》創作組希望,以履行一個交流平台的使命來運作該雜志--「收集用戶之所見,回饋用戶之所求。」