人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

正則表達式在網絡編程中的運用(3)

正則表達式在網絡編程中的運用(3)

更新時間:2022-07-04 文章作者:未知 信息來源:網絡 閱讀次數:

應用實例

  在對正則表達式有了較為全面的了解之后,就可以在Perl,PHP,以及ASP等程式中使用正則表達式了。

  下面以PHP語言為例,使用驗證用戶在線輸入的郵件地址以及網址的格式是否正確。PHP 提供了eregi()或ereg()資料處理函數實現字串比對剖析的模式匹配操作ereg()函數的使用格式如下:

      ereg (pattern, string)

  其中,pattern代表正則表達式的模式;而string則是執行查找替換操作的目標對象,如Email地址值。本函式以 pattern 的規則來剖析比對字串 string,找到則傳回值為 true。函式ereg()與eregi()的區別就是前者區分大小寫,后者與大小寫無關。使用PHP編寫的程序代碼如下:

    。?php
   if (ereg("^([a-z0-9_-])+@([a-zZ0-9_-])+(\.[a-z0-9_-])+[a-z]{2,3}$",$email))
   { echo "您的 E-Mail 通過初步檢查!";}
   else
   { echo "不是合法的E-Mail 地址,請重新輸入!";}
   ?>


  這個例子是可對使用者輸入的 E-Mail 作簡單的檢查,檢查使用者的 E-Mail 字串是否有 @ 字元,在 @ 字元前有小寫英文字母、數字或下"_",在 @ 之后有數節字串,最后的小數點后只能有二個或三個小寫英文字母。如webmaster@mail.sever.net, hello_2001@88new.cn就可以通過檢查,而New99@253.com(出現大寫字母)和new99@253.comn(最后的小數點后只能超過3個英文字母)就不能通過檢查。

  我們通過調用自定義正規則判別函式也可以進行檢查操作,如下面的網址檢驗函式:

function VerifyWebSiteAddr ($strWebSiteAddr){
return (eregi ("^([_0-9a-z-]+.)+([0-9a-z-]+.)+[a-z]{2,3}$", $strWebSiteAddr));
}

  我們知道,PHP程式的運行必須有服務器支持,如果您在自己的主頁上想實現以上功能, 嵌入式腳本語言Javascript或許是好的選擇。JavaScript中帶有一個功能強大的RegExp()對象,可以用來進行正則表達式的匹配操作。其中的test()方法可以檢驗目標對象中是否包含匹配模式,并相應的返回true或false。只須在HTML文檔的<head>區域添加一段Javascript代碼。

< language="Javascript1.2">
  function verifyAddress(obj){
   var email = obj.email.value;
   var pattern = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/;
   flag = pattern.test(email);
   if(flag){
    alert("您的 E-Mail 通過初步檢查!");
    return true;}
   else{
    alert("不是合法的E-Mail 地址,請重新輸入!");
    return false;}
  }
。/script>


  然后在網頁中輸入信息的表單域<form>標簽區域內中加入一行如下代碼:

  。紀nSubmit="return verifyAddress(this);">

  當按下提交按鈕后,首先運行verifyAddress()函式,進行匹配識別,如果滿足條件則發送表單信息到目標頁面,否則返回錯誤信息。

  事實上,正則表達式的功能遠非本文提到的這一點,下次,給大家介紹一種使用正則表達式從任意指定網頁中析取任意種類文本信息(如網頁中所有的圖片文件名)的技巧!


  Html源文件中image標簽的析取

  上篇,我們介紹了正則表達式的概念及其在網絡編程中使用正則表達式驗證用戶在線輸入的郵件地址以及網址的格式是否正確的應用實例,今天介紹一種從指定網頁源文件中析取image標簽的的編程技巧,即從網頁源文件中,解析出所有的插圖文件名(包括圖片路徑),也就是標簽<img src=http://cfan.net.cn/info/"....abc.jpg"> 中的文件名http://cfan.net.cn/info/"....abc.jpg"(有的可能是gif格式)。編程環境:PHP+Apache for Win98。

  首先, 用文本編輯器新建一個PHP類型的文件:abstractSRCfrompage.php3。為了方便講解,我們打算是在瀏覽器表單域中輸入需要析取image標簽的網頁的URL(或本機文檔),提交后執行析取操作,所以在該文件中,我們要建立一個用于輸入網址的表單,舉例如下:


<form action=" abstractSRCfrompage.php3" method="post">
  輸入網址<input type=text name=filename><br>
  <input type=submit name=submit value="提交">
</form>


  輸入正確的網址,提交后表單信息被送到abstractSRCfrompage.php3頁面,由于表單本身就在該頁面,所以相當于被送到自身頁面,下面我們需要編寫析取處理的PHP代碼,緊接著表單代碼段后寫入如下代碼:


<?php
if ($filename!=""){
$fp = fopen($filename, "r"); file://若輸入不為空,開啟本地或者遠程檔案;
while ($buffer = fgets($fp, 1024)) {
$source .=$buffer; }
fclose($fp);
file://查找$source中是否有<img ...src=http://cfan.net.cn/info/".....gif | jpg"> 這樣的標記
if(eregi("(<img)+[^<>]+(src=\")+[^\*\"<>|]+(\.)+((gif)|(jpg))+(\")",$source)) {
echo "找到圖片標簽:)<br>";}
else{
echo "未發現圖片標簽:(<br>";}
file://拆分,第一次用標簽,<img ...src=拆分,得到了以圖形文件名開頭的數組,
$splitres=split("((\">)|())+(<img)+[^<>]+(src=\")",$source);
echo "找到: $imagenums-1個圖片<br>分別為:<br>";
for($i=1;$i<sizeof($splitres);$i++){
file://二次拆分,用"拆分。因為文件名能含有",得到的拆分數組的第一個元素就是路徑+文件名了;
unset($imgname); // 再次使用前刪除imgname變量;
$imgname=spliti("\"",$splitres[$i]);//將析取的圖片信息依次賦給imgname變量
echo "$i=>".$imgname[0]."<br>"; file://輸出析取的圖片信息
}
}
?>


  該段程序的設計思路是:PHP程式判斷是否輸入了檔案名稱(網址URL或本機檔案名),若不為空則以只讀方式打開該檔案;接著使用函式fgets(fp,length)取得檔案指標fp所指的行并傳回該行內長度為length-1 的字串,上例中就是1024-1=1023;然后利用字串比對剖析函式ereg()查找$source中是否含有<img ...src=http://cfan.net.cn/info/".....gif | jpg"> 這樣的標記(關于該函式在上篇中有詳細的介紹);假如找到的話,則利用split()函式按一定的規則執行兩次拆分,去掉標記中的<img…src=字符和"字符,結果得到數組splitres,其中的每一個元素都是以圖形路徑+文件名開頭的數組;用for循環在屏幕上輸出每個數組的第一個元素值,即我們所需要的所有圖形路徑+文件名。

  其中函式sizeof($splitres)返回個數;在for循環中,依次將數組splitres的每個元素(也是數組)賦給數組變量imgname,并輸出imgname的第一個元素值(為找到的一個圖形路徑+文件名),當執行下次循環時,刪除變量imgname,達到重復使用的目的。大家可以仔細研究其中的奧妙。

  好了,寫好后,將abstractSRCfrompage.php3存到你的服務器指定目錄下,啟動Apache服務器,在瀏覽器中打開它,隨便輸入一個存在的網頁名稱或是遠程URL,看看效果如何。

  如果有興趣,你可以嘗試析取HTML文檔中的任意感興趣的信息,如果稍加改裝,做一個網站文本搜索引擎豈不更妙?

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 乌拉特后旗| 平乡县| 穆棱市| 阜城县| 伊金霍洛旗| 武平县| 霍林郭勒市| 阿拉尔市| 焦作市| 凤台县| 龙海市| 佛教| 措美县| 名山县| 福安市| 威信县| 美姑县| 延边| 溧阳市| 华坪县| 鲁甸县| 鄱阳县| 唐河县| 广水市| 邻水| 温宿县| 深泽县| 岳西县| 邵武市| 迁西县| 长子县| 益阳市| 龙里县| 岫岩| 重庆市| 襄垣县| 北海市| 庄浪县| 康定县| 河津市| 灵山县|