搜尋
首頁後端開發php教程pretty rhythm dear my future php的正規處理函數總結分析


preg_grep
(PHP 4, PHP 5)
preg_grep --   回與模式相符的陣列單元 
說明arraypreg_grep pat 🎜 >preg_grep() 傳回一個數組,其中包含了 input 數組中與給定的 pattern 模式相符的單元。 
flags 可以是以下標記: 
PREG_GREP_INVERT 
如果傳遞入此標記,preg_grep() 會傳回輸入陣列中不符合給定 pattern 的單元。本標示自 PHP 4.2.0 起使用。 
自 PHP 4.0.4 起,preg_grep() 傳回的結果使用輸入陣列的鍵名索引。如果不希望有這樣的結果,用 array_values() 對 preg_grep() 傳回的結果重新索引。 
上面是手冊上對preg_grep()的說明。首先這是perl相容的正規函數,所以我猜想preg_grep的意思是p(perl)reg(regular)_grep,其特點是可做用於數組,透過自己擴展,可用做多維數組中的正則匹配,並且可以透過flags參數傳回符合或非符合數組。其效率比用foreach(...){if...}結構快很多(未驗證),而且可匹配複雜模式。在搜尋、分檢等應用程式中用途不小。
例:

$arr = array('abc'=>12.213,'bb'=>12345,'ba'=>23.2321,34.3,'23'=>'3.3', '23434'=>'bbb');
// 傳回所有含有浮點數的陣列元素。
$fl_array = preg_grep ("/^(d+)?.d+$/", $arr);
print_r($fl_array);
?>
preg_match (PH🎜>?>
preg_match (PH🎜 = 3.0.9, PHP 4, PHP 5)
preg_match -- 進行正則表達式匹配
說明
int preg_match ( string pattern, string subject [, array matches [, int flags]] )
在 subject 字串中搜尋與 pattern 所給予的正規表示式相符的內容。 
如果提供了 matches,則其會被搜尋的結果所填入。 $matches[0] 將包含與整個模式相符的文本,$matches[1] 將包含與第一個捕獲的括號中的子模式所匹配的文本,以此類推。 
flags 可以是下列標記: 
PREG_OFFSET_CAPTURE 
如果設定本標記,每個出現的配對結果也同時回傳其附屬的字串偏移量。注意這改變了傳回的數組的值,使其中的每個單元也是一個數組,其中第一項為匹配字串,第二項為其偏移量。本標示自 PHP 4.3.0 起使用。 
flags 參數自 PHP 4.3.0 起可用。 
preg_match() 返回 pattern 所符合的次數。要嘛是 0 次(沒有配對)或 1 次,因為 preg_match() 在第一次配對後將停止搜尋。 preg_match_all() 則相反,會一直搜尋到 subject 的結尾處。如果出錯 preg_match() 回傳 FALSE。 
提示: 如果只想檢查一個字串是否包含在另一個字串中,不要用 preg_match()。可用 strpos() 或 strstr() 替代,則快得多。 
上面是手冊裡對preg_match()的說明,我認為這個函數的功用在於他可做來做驗證,也就是某字串是否符合某特定要求。其限制是上面所說的要嘛匹配0次,要嘛1次。並且傳回值是匹配次數。當需要全匹配時可使用preg_match_all().另外值得一提的是$matches數組的作用,可做自模式的返回值,有時很有用。
例:

if (preg_match ("/(bwebb)s(d)/i", "PHP is the web 45 scripting web 34 language the web 45 scripting web 34 language the web 45 scripting web 34 language the,$choice.
     print "A match was found.";
print_r($match);
} else {
   🎜>// 從 URL 取得主機名稱
preg_match("/^(http://)?([^/]+)/i",
     "http:// www.php.net/index.html", $matches);
$host = $matches[2];
// 從主機名稱取得後面兩段
preg_match("/[^. /]+.[^./]+$/", $host, $matches);
echo "domain name is: {$matches[0]}n";
?> 
preg_match_all
(PHP 3 >= 3.0.9, PHP 4, PHP 5)
preg_match_all -- 進行全域正規表示式符合
手冊上該函數的解釋非常明確,就不多做說明了。
说明
int preg_match_all ( string pattern, string subject, array matches [, int flags] )
在 subject 中搜索所有与 pattern 给出的正则表达式匹配的内容并将结果以 flags 指定的顺序放到 matches 中。 
搜索到第一个匹配项之后,接下来的搜索从上一个匹配项末尾开始。 
flags 可以是下列标记的组合(注意把 PREG_PATTERN_ORDER 和 PREG_SET_ORDER 合起来用没有意义): 
PREG_PATTERN_ORDER 
对结果排序使 $matches[0] 为全部模式匹配的数组,$matches[1] 为第一个括号中的子模式所匹配的字符串组成的数组,以此类推。 
preg_match_all ("|]+>(.*)[^>]+>|U",
     "example: 
this is a test
",
     $out, PREG_PATTERN_ORDER);
print $out[0][0].", ".$out[0][1]."\n";
print $out[1][0].", ".$out[1][1]."\n";
?>  
本例将输出: 
example: 
this is a test

example: , this is a test
因此,$out[0] 包含匹配整个模式的字符串,$out[1] 包含一对 HTML 标记之间的字符串。 
PREG_SET_ORDER 
对结果排序使 $matches[0] 为第一组匹配项的数组,$matches[1] 为第二组匹配项的数组,以此类推。 
preg_match_all ("|]+>(.*)[^>]+>|U",
     "example: 
this is a test
",
     $out, PREG_SET_ORDER);
print $out[0][0].", ".$out[0][1]."\n";
print $out[1][0].", ".$out[1][1]."\n";
?>  
本例将输出: 
example: , example:
this is a test
, this is a test
本例中,$matches[0] 是第一組配對結果,$matches[0][0] 包含整個模式的文本,$matches[0][1] 包含符合第一個子模式的文本,以此類推。同樣,$matches[1] 是第二組配對結果,等等。 
PREG_OFFSET_CAPTURE 
如果設定本標記,每個出現的符合結果也同時回傳其附屬的字串偏移量。注意這改變了傳回的數組的值,使其中的每個單元也是一個數組,其中第一個為匹配字串,第二項為其在 subject 中的偏移量。本標示自 PHP 4.3.0 起使用。 
如果沒有給予標記,則假定為 PREG_PATTERN_ORDER。 
回傳整個模式符合的次數(可能為零),如果出錯則回傳 FALSE。
例 1. 從某文本中取得所有的電話號碼
preg_match_all ("/(?   (d{3})?   )?   (?(1) )[ {3}-d{4}/x",
                 "Call 555-1212 or 1-800-555-1212", // \2 是一個反向引用的例子,其在 PCRE 中的意思是
// 必須符合正規表示式本身第二組括號內的內容,本例中
// 就是 ([w]+)。因為字串在雙引號中,所以需要
// 多加一條反斜線。
$html = "bold textclick me";
preg_match_all ("/( ]*>)(.*)(\2>)/", $html, $matches);
for ($i=0; $i   echo "matched: ".$matches[0][$i]."n";
   echo "part 1: ".$matches[1][$i]."n";
   echo "part 2: ".$matches[3][$i]."n";
   echo "part 3: ".$matches[4][$i]."nn";
}
?>  
preg_quote
(PHP 3 >= 3.0.9, PHP 4, PHP 5)
preg_quote --pquoquobpedstring; str [, string delimiter] )
preg_quote() 以 str 為參數並為其中每個屬於正規表示式語法的字元前面加上一個反斜線條。如果你需要以動態產生的字串作為模式去匹配則可以用此函數轉義其中可能包含的特殊字元。 
如果提供了可選參數 delimiter,則該字元也將被轉義。可用來轉義 PCRE 函數所需的定界符,最常用的定界符是斜線 /。 
正規表示式的特殊字元包括:.  + * ? [ ^ ] $ ( ) { } = !  | :。 
註: 本函數可安全用於二進位物件。
上面是手冊上的解釋,也很明白,不多說了,另外手冊上還有一註釋就是該函數可安全用於二進制對象,這點很有用。
範例: 範例 1. preg_quote() 範例
$keywords = '$40 for a g3/400';
$keywordss for a g3/400';
$keywordssmm; 🎜>echo $keywords; // returns $40 for a g3/400
?>  
範例 2. 將某文中的一個例子加上斜體標記
/🎜>// 有特殊意義。
$textbody = "This book is *very* difficult to find.";
$word = "*very*";
$textbody  preg_replace ("/".
$textbody  preg_replace ("/".p. /",
                           "".$word          $textbody);
?>  
接下來就是應用超彈性、功能超強、使用超廣泛的preg_replace函數。
preg_replace
(PHP 3 >= 3.0.9, PHP 4, PHP 5)
preg_replace -- 執行正規表示式的搜尋與取代
replacement, mixed subject [, int limit] )
在 subject 中搜尋 pattern 模式的配對並替換為 replacement。如果指定了 limit,則僅取代 limit 個匹配,如果省略 limit 或其值為 -1,則所有的匹配項都會被取代。 
replacement 可包含 \n 形式或(自 PHP 4.0.4 起)$n 形式的反向引用,並優先使用後者。每個此種引用將被替換為與第 n 個被捕獲的括號內的子模式所匹配的文字。 n 可以從 0 到 99,其中 \0 或 $0 指的是整個模式​​所符合的文字。對左圓括號從左到右計數(從 1 開始)以取得子模式的數目。 
對替換模式在一個逆向引用後面緊接著一個數字時(即:緊接在一個匹配的模式後面的數字),不能使用熟悉的 \1 符號來表示逆向引用。舉例說 \11,會使 preg_replace() 搞不清楚是想要一個 \1 的反向引用後面跟著一個數字 1 還是一個 \11 的反向引用。本例中的解法是使用 ${1}1。這會形成一個隔離的 $1 逆向引用,而使另一個 1 只是單純的文字。 
如果搜尋到符合項,則會傳回被取代後的 subject,否則傳回原來不變的 subject。 
preg_replace() 的每個參數(除了 limit)都可以是一個陣列。如果 pattern 和 replacement 都是數組,將以其鍵名在數組中出現的順序來處理。這不一定和索引的數字順序相同。如果使用索引來識別哪一個 pattern 會被哪個 replacement 來替換,則應在呼叫 preg_replace() 之前用 ksort() 對陣列進行排序。 
如果 subject 是個數組,則會對 subject 中的每個項目執行搜尋和替換,並傳回一個陣列。 
若 pattern 和 replacement 都是數組,則 preg_replace() 會依序從中分別取出數值來對 subject 進行搜尋與取代。如果 replacement 中的值比 pattern 中的少,則以空字串作為剩餘的替換值。如果 pattern 是陣列而 replacement 是字串,則對 pattern 中的每個值都用此字串作為替換值。反過來則沒有意義了。 
/e 修正符使 preg_replace() 將 replacement 參數視為 PHP 程式碼(在適當的反向引用替換完後)。提示:確保 replacement 構成一個合法的 PHP 程式碼字串,否則 PHP 會在報告包含 preg_replace() 的資料列中出現語法解析錯誤。 
註: limit 參數是 PHP 4.0.1pl2 之後所加入的。 
我認為其強大之處就是他不但可以處理字串,而且可以處理數組,而且他的逆向引用功能非常靈活。基本上他可以滿足一般使用者的大部分需求,如果他不能勝任,那麼我們還有preg_replace_callback()函數,可以自訂回呼函數,滿足你的高階要求。如設計過濾器等。
preg_replace_callback
(PHP 4 >= 4.0.5, PHP 5)
preg_replace_callback -- 用回調函數執行正則表達式的搜索和替換
說明
mixed preg_replace_callback ( mixed pattern, callback callback, mixed subject [, int limit] )
本函數的行為幾乎和 preg_replace() 一樣,除了不是提供一個 replacement 參數,而是指定一個 callback 函數。該函數將以目標字串中的匹配數組作為輸入參數,並傳回用於替換的字串。
範例 1. preg_replace_callback() 範例
   // 此文字是用於 2002 年的,
  "April fools day is 04/01/2002n";
   $text.= "Last christmas was 12/24/2001n")
   12/24/2001n" 🎜> // 通常:$matches[0] 是完整的匹配項
     // $matches[1] 是第一個括號中的子模式的匹配項
     [1].($matches[2]+1);
   }
   echo preg_replace_callback(
        
               "next_year",
             ools day is 04/01/2003
   // Last christmas was 12/24/2002
?>  
You'll often need the callback function for a preg_replace_callback() in   function as callback within the call to preg_replace_callback(). By doing it this way you have all information for the call in one place and do not clutter the function name且place_callback()函數的朋友來說,你應該回需要callback函數(否則用他幹嘛,直接用preg_replace不是更好),不過也常常只是用一處。既然這樣你可以用create_function()來宣告一個匿名函式作為preg_replace_callback()的回呼函數。這樣,我們即滿足了宣告訊息的需要,有不致因這個不會再用到的函數名稱而混亂。
範例 2. preg_replace_callback() 與 create_function()
   /* 一個 UNIX 風格的指令/
   $fp = fopen("php://stdin", "r") or die("can't read stdin");
   line = fgets($fp);
       $line = preg_replace_callback(
        function(
               // 這裡使用單一引號很關鍵,
// 否則就把所有的 $ 換成 $
               '$matmat',
               ),
           $line
       ); 🎜>       echo $line;
   }
   fclose($fp);
?>  , PHP 5 )
preg_split -- 用正規表示式分割字串
不再贅述。
說明
array preg_split ( string pattern, string subject [, int limit [, int flags]] ) 回復一個陣列,包含 int flags]] ) 如果指定了 limit,則最多回傳 limit 個子串,如果 limit 是 -1,則表示沒有限制,可以用來繼續指定選用參數 flags。 
flags 可以是下列標記的任意組合(用位元或運算子 | 組合): 
PREG_SPLIT_NO_EMPTY 
如果設定了本標記,則 preg_split() 只會傳回非空的成分。 
PREG_SPLIT_DELIM_CAPTURE 
如果設定了這個標記,定界符模式中的括號表達式也會被捕捉並回傳。本標記添加於 PHP 4.0.5。 
PREG_SPLIT_OFFSET_CAPTURE 
如果設定了本標記,如果設定本標記,每個出現的匹配結果也同時傳回其附屬的字串偏移量。注意這改變了傳回的數組的值,使其中的每個單元也是一個數組,其中第一個為匹配字串,第二項為其在 subject 中的偏移量。本標示自 PHP 4.3.0 起使用。 
提示: 如果不需要正規表示式的功能,可以選擇使用較快(也較簡單)的替代函數如 explode() 或 str_split()。  

以上就介紹了pretty rhythm dear my future php的正規處理函數總結分析,包括了pretty rhythm dear my future的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
超越炒作:評估當今PHP的角色超越炒作:評估當今PHP的角色Apr 12, 2025 am 12:17 AM

PHP在現代編程中仍然是一個強大且廣泛使用的工具,尤其在web開發領域。 1)PHP易用且與數據庫集成無縫,是許多開發者的首選。 2)它支持動態內容生成和麵向對象編程,適合快速創建和維護網站。 3)PHP的性能可以通過緩存和優化數據庫查詢來提升,其廣泛的社區和豐富生態系統使其在當今技術棧中仍具重要地位。

PHP中的弱參考是什麼?什麼時候有用?PHP中的弱參考是什麼?什麼時候有用?Apr 12, 2025 am 12:13 AM

在PHP中,弱引用是通過WeakReference類實現的,不會阻止垃圾回收器回收對象。弱引用適用於緩存系統和事件監聽器等場景,需注意其不能保證對象存活,且垃圾回收可能延遲。

解釋PHP中的__ Invoke Magic方法。解釋PHP中的__ Invoke Magic方法。Apr 12, 2025 am 12:07 AM

\_\_invoke方法允許對象像函數一樣被調用。 1.定義\_\_invoke方法使對象可被調用。 2.使用$obj(...)語法時,PHP會執行\_\_invoke方法。 3.適用於日誌記錄和計算器等場景,提高代碼靈活性和可讀性。

解釋PHP 8.1中的纖維以進行並發。解釋PHP 8.1中的纖維以進行並發。Apr 12, 2025 am 12:05 AM

Fibers在PHP8.1中引入,提升了並發處理能力。 1)Fibers是一種輕量級的並發模型,類似於協程。 2)它們允許開發者手動控制任務的執行流,適合處理I/O密集型任務。 3)使用Fibers可以編寫更高效、響應性更強的代碼。

PHP社區:資源,支持和發展PHP社區:資源,支持和發展Apr 12, 2025 am 12:04 AM

PHP社區提供了豐富的資源和支持,幫助開發者成長。 1)資源包括官方文檔、教程、博客和開源項目如Laravel和Symfony。 2)支持可以通過StackOverflow、Reddit和Slack頻道獲得。 3)開發動態可以通過關注RFC了解。 4)融入社區可以通過積極參與、貢獻代碼和學習分享來實現。

PHP與Python:了解差異PHP與Python:了解差異Apr 11, 2025 am 12:15 AM

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

php:死亡還是簡單地適應?php:死亡還是簡單地適應?Apr 11, 2025 am 12:13 AM

PHP不是在消亡,而是在不斷適應和進化。 1)PHP從1994年起經歷多次版本迭代,適應新技術趨勢。 2)目前廣泛應用於電子商務、內容管理系統等領域。 3)PHP8引入JIT編譯器等功能,提升性能和現代化。 4)使用OPcache和遵循PSR-12標準可優化性能和代碼質量。

PHP的未來:改編和創新PHP的未來:改編和創新Apr 11, 2025 am 12:01 AM

PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。