PHP基礎 正規表示式

2022-09-01 02:54:11 字數 3224 閱讀 4034

1.正規表示式的語法

正規表示式(regular expression)描述了一種字串匹配的模式,可以用來檢查乙個串是否含有某種子串、將匹配的子串做替換或者從某個串中取出符合某個條件的子串

注意:1. *、+和?限定符都是貪婪的,因為它們會盡可能多的匹配文字,只有在它們的後面加上乙個?就可以實現非貪婪或最小匹配。

2.(...) 括號內的正規表示式表示表示選中的部分。

3.php匹配模式的字串前後都要加上  / 作為界定符 ,也可以用#  ~ 等,只要不是字母或者反斜槓並且前後成對出現即可 。

2.正規表示式

2.1、單次正規表示式的匹配

2.1.1.preg_match():第一次匹配

字元成功就返回(陣列)

<?php 

//需要匹配的字串。date函式返回當前時間 $content = "current date and time is ".date("y-m-d h:i a").", we are learning php together.";

//使用通常的方法匹配時間 if (preg_match ("/\d-\d-\d \d:\d [ap]m/", $content, $m)) //

由於時間的模式明顯,也可以簡單的匹配 if (preg_match ("/([\d-]) ([\d:] [ap]m)/", $content, $m))

?>

這是乙個簡單動態文字串匹配例項。假設當前系統時間是「2023年8月17日13點25分」,將輸出如下的內容。 

匹配的時間是:2006-08-17 01:25 pm 

當前日期是:2006-08-17 

當前時間是:01:25 pm

2.1.2.preg_grep()第一次匹配

陣列成功就返回(陣列)

<?php 

$subjects = array

( "mechanical engineering", "medicine",

"social science", "agriculture",

"commercial science", "politics");

//匹配所有僅由有乙個單詞組成的科目名

$alonewords = preg_grep("/^[a-z]*$/i", $subjects

); ?>

2.2、進行全域性正規表示式匹配2.2.1.preg_match_all()匹配完全文所有的字元才返回

<?php 

////輸入:字串

//輸出:字串 function url2html($text)

else //

生成html文字 $text = str_replace($link_url,"$link_text",$text);

} return

$text

; }

///*

輸出結果

*/ ?>

2.3、正規表示式的替換2.3.1.preg_replace()函式原型:mixed preg_replace (mixed $pattern, mixed $replacement, mixed $subject [, int $limit]) 

preg_replace較ereg_replace的功能更加強大。其前三個引數均可以使用陣列;第四個引數$limit可以設定替換的次數,預設為全部替換。**6.7是乙個陣列替換的應用例項。 

陣列替換 **如下:

<?php 

//字串 $string = "name:

\nemail:

\naddress:

\n";

//模式 $patterns =array(

"//",

"//",

"//");

//替換字串 $replacements = array (

"no.5, wilson st., new york, u.s.a",

"thomas ching",

"[email protected]",);

//輸出模式替換結果 print preg_replace($patterns, $replacements, $string);

?>

輸出結果如下。 

name: thomas ching", 

email: [email protected] 

address: no.5, wilson st., new york, u.s.a 

2.4、正規表示式的拆分

2.4.1.split()

函式原型:array split (string $pattern, string $string [, int $limit]) 

本函式返回乙個字串陣列,每個單元為$string經正規表示式$pattern作為邊界分割出的子串。如 果設定了$limit,則返回的陣列最多包含$limit個單元。而其中最後乙個單元包含了$string中剩餘的所有部分。spliti是split的 忽略大小版本。**6.8是乙個經常用到關於日期的示例。 

日期的拆分 **如下:

<?php 

$date = "08/30/2006";

//分隔符可以是斜線,點,或橫線 list($month, $day, $year) = split ('[/.-]', $date);

//輸出為另一種時間格式 echo "month: $month; day: $day; year: $year

\n";

?>

提示 使用正規表示式的方法分割字串,可以使用更廣泛的分隔字元。例如,上面 對日期格式和單詞處理的分析。如果僅用某個特定的字元進行分割,建議使用explode()函式,它不呼叫正規表示式引擎,因此速度是最快的。

PHP基礎 正規表示式

1 和 匹配開頭 the 匹配結尾abc 2 和 表示出現0次或1次或多次 相當於 表示出現1次或多次 相當於 表示出現0次或1次 相當於 要點 和 只管它前面那個字元.3 在大括號裡限制字元出現的個數 ab 必須出現兩個b ab 出現兩個及以上b ab 出現2個至6個中的任意個b 注意 大括號裡規...

正規表示式 1 正規表示式基礎

1.正規表示式基礎 正規表示式描述了一種字串匹配的模式,即可以使使用者通過一系列普通字元或特殊字元構建能夠明確描述文字字串的匹配模式,可以用來檢查某個字串是否含有某種子字串,將匹配的子字串做替換或者從某個字串中取出符合某個條件的子字串等。1.1 正規表示式的基本結構 乙個正規表示式就是由普通字元 如...

php正規表示式詳解,PHP正規表示式使用詳解

操作符 描述 轉義符 圓括號和方括號 限定符 anymetacharacter 位置和順序 或 操作 全部符號解釋 字元 描述 將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開...