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
preg_match
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:
$out, PREG_PATTERN_ORDER);
print $out[0][0].", ".$out[0][1]."\n";
print $out[1][0].", ".$out[1][1]."\n";
?>
本例将输出:
example: ,
example: , this is a test
因此,$out[0] 包含匹配整个模式的字符串,$out[1] 包含一对 HTML 标记之间的字符串。
PREG_SET_ORDER
对结果排序使 $matches[0] 为第一组匹配项的数组,$matches[1] 为第二组匹配项的数组,以此类推。
preg_match_all ("|<[^>]+>(.*)[^>]+>|U",
"example:
$out, PREG_SET_ORDER);
print $out[0][0].", ".$out[0][1]."\n";
print $out[1][0].", ".$out[1][1]."\n";
?>
本例将输出:
example: , example:
本例中,$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教程有興趣的朋友有所幫助。

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

會話劫持可以通過以下步驟實現:1.獲取會話ID,2.使用會話ID,3.保持會話活躍。在PHP中防範會話劫持的方法包括:1.使用session_regenerate_id()函數重新生成會話ID,2.通過數據庫存儲會話數據,3.確保所有會話數據通過HTTPS傳輸。

RESTAPI設計原則包括資源定義、URI設計、HTTP方法使用、狀態碼使用、版本控制和HATEOAS。 1.資源應使用名詞表示並保持層次結構。 2.HTTP方法應符合其語義,如GET用於獲取資源。 3.狀態碼應正確使用,如404表示資源不存在。 4.版本控制可通過URI或頭部實現。 5.HATEOAS通過響應中的鏈接引導客戶端操作。

匿名類在PHP中的主要作用是創建一次性使用的對象。 1.匿名類允許在代碼中直接定義沒有名字的類,適用於臨時需求。 2.它們可以繼承類或實現接口,增加靈活性。 3.使用時需注意性能和代碼可讀性,避免重複定義相同的匿名類。

在PHP中,異常處理通過try,catch,finally,和throw關鍵字實現。 1)try塊包圍可能拋出異常的代碼;2)catch塊處理異常;3)finally塊確保代碼始終執行;4)throw用於手動拋出異常。這些機制幫助提升代碼的健壯性和可維護性。

PHP中有四種主要錯誤類型:1.Notice:最輕微,不會中斷程序,如訪問未定義變量;2.Warning:比Notice嚴重,不會終止程序,如包含不存在文件;3.FatalError:最嚴重,會終止程序,如調用不存在函數;4.ParseError:語法錯誤,會阻止程序執行,如忘記添加結束標籤。

在PHP中,include,require,include_once,require_once的區別在於:1)include產生警告並繼續執行,2)require產生致命錯誤並停止執行,3)include_once和require_once防止重複包含。這些函數的選擇取決於文件的重要性和是否需要防止重複包含,合理使用可以提高代碼的可讀性和可維護性。

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。
