1 / 19

PHP5 與 MySQL5 入門學習指南

PHP5 與 MySQL5 入門學習指南. 第 20 章 正規化語法與函數. 凱文瑞克 著. 本章大綱. 20-1 Meta 字元集 20-2 字串格式檢查 20-3 文字置換 20-4 字串分解 問題與討論. 20-1 Meta 字元集. 正規化 (regular expression) 語法,對於文字處理非常方便 , 例如搜尋 , 剖析文章,只要當我們想要對文字的內容進行檢查,看看是否符合需求時,就可以使用正規化語法 Meta 字元集是正規化過程中 , 定義格式的規範。. Meta 字元集. Meta 字元集實例.

kyran
Download Presentation

PHP5 與 MySQL5 入門學習指南

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PHP5與MySQL5入門學習指南 第 20 章 正規化語法與函數 凱文瑞克 著

  2. 本章大綱 20-1 Meta字元集 20-2 字串格式檢查 20-3 文字置換 20-4 字串分解 問題與討論

  3. 20-1 Meta字元集 • 正規化 (regular expression) 語法,對於文字處理非常方便, 例如搜尋, 剖析文章,只要當我們想要對文字的內容進行檢查,看看是否符合需求時,就可以使用正規化語法 • Meta字元集是正規化過程中, 定義格式的規範。

  4. Meta字元集

  5. Meta字元集實例 [abc] 符合 a,b,c 任一字元 ^[abc] 符合字串開頭一定要符合 a,b,c 任一字元 [abc]$ 符合字串結尾一定要符合 a,b,c 任一字元 [^abc] 不可符合 a,b,c 任一字元 [a]{4} 一定要剛好 4 個 a [a]{4,} a 要有 4 個以上 [a]{,4} 要有 0 個到 4 個 a [a]{1,4} 要有 1 個到 4 個 a ab*c ac , abc , abbc , abbbc , abbbbc ... 皆符合(符合 0 個以上) ab+c abc, abbc , abbbc , abbbbc ... 皆符合(符合 1 個以上) [a-z] 符合小寫 a 到 z 的任一字母 [A-Z] 符合大寫 A 到 Z 的任一字母 [0-9] 符合 0 到 9 的任一數字 [A-Z]+ 符合大寫 a 到 z 的字母要一個以上 .* 代表符合任何字元 0 個以上 ([0-9]{1,2}) 將兩個樣本群組成一個樣本

  6. 20-2 字串格式檢查 • PHP 提供 ereg() 函數可以檢查字串是否符合要求, 其格式如下:int ereg (string 樣本字串, string 字串 [,array regs]) • 說明判斷 [字串] 的格式是否符合要求。搜尋一個字串是否符合 [樣本字串] 的格式。第三個選項設定後, 字串片段會存入指定的陣列。 如果字串比對沒有錯誤則傳回 True。

  7. 1: <?php 2: $date="2003-01-31"; 3: if (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs)) { 4: echo "$regs[3] / $regs[2] / $regs[1] <br>"; 5: echo "$regs[0] <br>"; 6: echo "$regs[1]年 $regs[2]月 $regs[3]日"; 7: } else { 8: echo "不合法的日期格式:$date"; 9: } 10: ?> 檢查日期格式 第一個參數就是字串的格式, 第二個參數 $date 就是被比對的字串, 第三個參數 $regs 就是字串片段陣列, 在這個範例中 $regs[0] 會儲存 $date 字串內容, $regs[1] 會儲存日期, $regs[2] 會儲存月份, $regs[3] 會儲存年。

  8. 1: <?PHP 2: $string="I am abc"; 3: if (ereg ("abc", $string)) echo "'abc' is True <p>"; 4: if (ereg ("^abc", $string)) echo "'^abc' is True <p>"; 5: if (ereg ("abc$", $string)) echo "'abc$' is True"; 6: ?> 第 2 行設定測試字串。 第 3 行如果在 $string 中發現 "abc" 傳回True。 第4行傳回 True, 如果在 $string 字串的開始發現 "abc"。 第5行傳回 true, 如果在 $string 字串的結尾發現 "abc"。

  9. ereg() 需要注意英文字母大小寫, 如果需要不區分英文字母大小寫, 則可以使用 eregi() 函數, 其格式如下。 int eregi (string樣本, string 字串[,array regs]) 這個函數功能與 ereg() 相同, 除了忽略大小寫。

  10. 20-3 文字置換 • 置換文字內容也是常使用功能。 • 函數 ereg_replace() 會將符合格式的字串替換。其格式如下:string ereg_replace (string 樣本字串, string 替代文字, string 字串) • 說明這個函數能夠掃描 [字串] 中符合 [樣本字串] 的部分, 然後將符合的部分使用 [替代文字]取代, 再將修改過的字串傳回 (在這裡大小寫是當做不同的) 。如果沒有符合的部分, 則會將原始的字串傳回。

  11. 1: <?php 2: $string = "This is a test. That is another test."; 3: echo ereg_replace (" is", " was", $string)."<P>"; 4: echo ereg_replace (" is", "<B> is</B>", $string)."<P>"; 5: echo ereg_replace ("test", "<a href=http://www.flag.com.tw>test</a>", $string); 6: ?> 第 2 行設定測試用字串。 第 3 行將 is 置換成 was。 第4行將 is 置換成粗體文字的 is。 第5 行將 test 加上超連結。

  12. 1: <?php 2: $string ="測試用文字"; 3: echo "**********$string**********<p>"; 4: $string = ereg_replace ("^", "<BR>", $string); 5: $string = ereg_replace ("$", "<BR>", $string); 6: echo "==========$string=========="; 7: ?> 第 2 行設定測試用字串。 第 3 行顯示置換前之內容。 第 4-5 行 $string 開始的位置放入一個 <BR> 標記會在 $string 結尾的位置放入一個 <BR> 標記, 即字串前後加 <BR> 標籤。 第 6 行顯示置換結果。

  13. 因為正規化是處理文字的函數, 任何的輸入資料都會被轉換成文字型態。 1: <?PHP 2: $num = 49; 3: $string = "This string has four words. <BR>"; 4: $string = ereg_replace ('four', $num, $string); 5: echo $string; 6: $num = '49'; 7: $string = "This string has four words"; 8: $string = ereg_replace ('four', $num, $string); 9: echo $string; 10: ?> 第 2 行設定 $num 為整數49。 第 3 行設定測試字串。 第 4 行置換 four 變成 49 (integer)。 第 5 行顯示置換後的結果。 第 6 行設定 $num 為文字 '49'。 第 7 行設定測試字串。 第 8 行置換 four 變成 '49'。 第 9 行顯示置換後的結果。

  14. 20-4 字串分解 • PHP 提供 split() 函數。 此函數可依照格式分隔字串。 • 其格式如下:array split (string 樣本字串, string 字串[, int limit]) • 說明函數將原始 [字串] 依據 [樣本字串] 當分隔, 順序儲存在陣列中, 假如有參數 limit 有設定, 那麼 limit 為陣列的大小。假如有錯誤發生, split() 傳回 false, split()函數中大小寫字元是當做不同的字元。

  15. 1: <?PHP 2: $date = "04/30/1973"; 3: list ($month, $day, $year) = split ('[/.-]', $date); 4: echo "月: $month; 日:$day; 年: $year<br>\n"; 5: ?> 第2行設定測試日期。 第 3 行將 $date 利用[/.-]符號分隔成數個片段。 每個片段依序存在三個變數中。 第 4 行顯示結果。

  16. spliti() 函數 • 函數格式如下:array spliti (string 樣本字串, string 字串 [, int limit]) • 說明:功能和split()完全相同,除了忽略大小寫。

  17. sql_regcase() sql_regcase() 提供產生忽略大小寫的合法正規化字串的功能。其格式如下: string sql_regcase (string 字串) 說明 傳回一個忽略大小寫的合法正規化字串, 這函數可以將字串中的每一個字轉換成一個 [] 符號包括起來的敘述, [] 中的內容是這個字元的大寫及小寫。

  18. 1: <?PHP 2: echo sql_regcase ("PHP is a good solution"); 3: ?> 將文字串"PHP is a good solution"正規化。

  19. 問題與討論 • 何謂正規化? • 請將範例20-5以文字檔案方式讀入後, 將string加上底線後顯示出來。 • 請利用表單輸入一個電子郵件地址, 並檢查此地址格式是否符合電子郵件地址格式。 • 請利用表單輸入一串文字, 將使用者輸入的文字串分解成單字。 • 請將 "2020/10-30" 分解成 2020年10月30日。

More Related