發新話題

[分享] 《PHP》『正規表達函式庫』

《PHP》『正規表達函式庫』

《PHP》『正規表達函式庫』ereg 正規表達比對

ereg ---  正規表達比對

語法 : int ereg (string pattern, string string [, array regs])

說明 :

搜尋string來和pattern正規表示比對。

若找到比對則會呼叫第三個參數regs,比對的結果會儲存在regs的元素之中,$regs[1]為符合第一個左邊括弧(parenthesis)的部份字串,$regs[2]為符合第二個括弧的部份字串,以此類推,$regs[0]為參數string。

如果ereg( )找到比對,則$regs會被十個元素來填滿,即使是多於或少於十個括弧內的部份字串,也可以比對,這將不影響ereg( )去比對更多部份字串的能力。如果比對不到,$regs將不會被ereg( )改變。

搜尋是會區分大小寫的。

如果在string中比對到pattern則傳回true,如果比對不到或是發生錯誤則傳回false。

以下的範例會將日期格式YYYY-MM-DD切斷,並且把它顯示成DD.MM.YYYY的格式。

Example :

<?php

    if (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs)) {

          echo "$regs[3].$regs[2].$regs[1]";

    }

       else {

               echo "Invalid date format: $date";

       }

?>

參考 : eregi( )  ereg_replace( )  eregi_replace( )



[ 本帖最後由 蔡逸竹 於 2006-9-24 01:00 編輯 ]

TOP

《PHP》『正規表達函式庫』ereg_replace 正規表達比對取代

ereg_replace ---  正規表達比對取代

語法 : string ereg_replace (string pattern, string replacement, string string)

說明 :

此函式掃瞄string來和pattern比對,然後以replacement來取代比對到的文字。

此函式傳回修改過的字串,如果比對不到則傳回原來的字串。

如果pattern包含括弧的部份字串,則replacement可以包含" \\數字"的部份字串,這將會以第幾個括弧內的部份字串來替代。\\0將會產生整個字串的內容,最多可使用到九個部份字串,這種情況下它會以開啟的括弧來計算。

如果在string中找不到比對,則將會傳回未改變的字串string。

以下的範例會將字串切斷,並顯示三次 "This was a test" :

<?php

    $string = "This is a test";

    echo ereg_replace (" is", " was", $string);

    echo ereg_replace ("( )is", "\\1was", $string);

    echo ereg_replace ("(( )is)", "\\2was", $string);

?>

有一個地方需要去注意的是,如果你在參數replacement中使用整數值的時候,你可能無法取得到結果,這是因為ereg_replace( )將會把數字解釋成字元的順序(ordinal)值,並且執行它,例如 :

<?php

   /* This will not work as expected. */

  $num = 4;

  $string = "This string has four words.";

  $string = ereg_replace('four', $num, $string);

  echo $string;       /* Output: 'This string has words.' */

  /* This will work. */ $num = '4';

  $string = "This string has four words.";

  $string = ereg_replace('four', $num, $string);

  echo $string;      /* Output: 'This string has 4 words.' */

?>

參考 : ereg( )  eregi( )  eregi_replace( )

TOP

《PHP》『正規表達函式庫』eregi 忽略大小寫的正規表達比對

eregi ---  忽略大小寫的正規表達比對

語法 : int eregi (string pattern, string string [, array regs])

說明 :

此函式和ereg( )相同,不同處在於當它在比對字母的字元時,它是忽略大小寫的。

參考 : ereg( )  ereg_replace( )  eregi_replace( )

TOP

《PHP》『正規表達函式庫』eregi_replace 忽略大小寫的正規表達比對取代

eregi_replace ---  忽略大小寫的正規表達比對取代

語法 : string eregi_replace (string pattern, string replacement, string string)

說明 :

此函式和ereg_replace( )相同,不同處在於當它在比對字母的字元時,它是忽略大小寫的。

參考 : ereg( )  eregi( )  ereg_replace( )

TOP

《PHP》『正規表達函式庫』split 以正規表達式將字串切開

split ---  以正規表達式將字串切開

語法 : array split (string pattern, string string [, int limit])

說明 :

傳回字串的陣列,以正規表達式pattern為界限,將字串string切開。如果有設定limit,則傳回的陣列最多將會包含limit個元素,而最後的元素會包含全部string所剩下部份。如果發生錯誤,split( )則傳回false。

以下的範例可以從/etc/passwd的一行裡,取得五個欄位的資料 :

<?php

   $passwd_list = split (":", $passwd_line, 5);

?>

可以用斜線、逗點、或是連字號,來剖析日期 :

<?php

   date = "04/30/1973";      // Delimiters may be slash, dot, or hyphen

   list ($month, $day, $year) = split ('[/.-]', $date);

   echo "Month: $month; Day: $day; Year: $year<br>\n";

?>

注意 : pattern是有區分大小寫的

注意 : 如果你不需要正規表達的功能,你可以使用速度更快的explode( )

參考 : spliti( )  explode( )  implode( )

TOP

《PHP》『正規表達函式庫』spliti 忽略大小寫的以正規表達式將字串切開

spliti ---  忽略大小寫的以正規表達式將字串切開

語法 : array split (string pattern, string string [, int limit])

說明 :

此函式和split( )相同,不同處在於當它在比對字母的字元時,它是忽略大小寫的。

參考 : split( )  explode( )  implode( )

TOP

《PHP》『正規表達函式庫』sql_regcase 使正規表達式不分大小寫比對

sql_regcase ---  使正規表達式不分大小寫比對

語法 : string sql_regcase (string string)

說明 :

傳回一個有效的正規表達式比對string,忽略大小寫的。這個表達式是將各個字元轉換成一個中括弧( [ ] )來表示,如果這個字元是可用的,則中括弧會包含字元的大寫與小寫,否則它會包含原來字串兩次。

Example :

<?php

   echo sql_regcase ("Foo bar");

?>

顯示出 :

[Ff][Oo][Oo][  ][Bb][Aa][Rr]

這可以用來達到不分大小寫的pattern比對,這只有在區分大小寫的正規表達中才行。

TOP

怎麼都沒人回覆呢這真的是很文章押............

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。