PHP 是一種既簡單又方便的編程語言。在許多不同的開發場景中,它相當受歡迎。不過,也有些難點需要克服,例如正則表達式,尤其是 preg_match。preg_match 是對字符串中模式的匹配。在這篇文章中,我將向您介紹 preg_match 的使用方法。
在這兒我們有一個示例文本字符串:“It is time to learn PHP.” (現在是學習 PHP 的時候了)
$str = "It is time to learn PHP.";
使用 preg_match 檢查子字符串是否存在。變量 $str 將作為第一個參數傳遞,而模式字符串將作為第二個參數傳遞。如需查找包含字符串“learn”的段落,可以按如下檢查:
$pattern = "/learn/"; if (preg_match($pattern, $str)) { echo "String exists!"; } else { echo "String not found!"; }
如果在字符串中找到了子字符串,“String exists!”(字符串存在)會輸出到控制臺,否則將輸出“String not found!”(未找到字符串)。
您可以通過使用捕獲組來提取匹配的子字符串。在這一過程中,您的模式參數需要使用圓括號將子表達式括起來。我們將匹配變量 $str 中的“learn”子字符串,并提取它的位置。
$pattern = "/(learn)/"; preg_match($pattern, $str, $matches, PREG_OFFSET_CAPTURE); print_r($matches);
運行以上 PHP 腳本后,輸出如下:
Array ( [0] => Array ( [0] => learn [1] => 15 ) [1] => Array ( [0] => learn [1] => 15 ) )
可以看到,子字符串的位置在數組索引為 1 的子數組中。該值顯示為數組索引為 1 的 1。索引 0 顯示的是完整匹配。
preg_match 也可以用于搜索多個匹配項。為此,您可以在字符串中使用正則表達式的標志行為。使用 'g' 標志,可以多次調用 preg_match 來搜索所有匹配項。您還可以通過“在表達式末尾添加一個捕獲組”來避免重復代碼。在得到多個匹配時,可以將其存儲在一個數組中。
以下是一個搜索所有從 a 到 z 的字符的示例:
$str = "abcdefghijklmnopqrstuvwxyz"; $pattern = "/([a-z])/g"; preg_match_all($pattern, $str, $matches); print_r($matches[0]);
當您運行以上 PHP 腳本時,輸出將會是:
Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f [6] => g [7] => h [8] => i [9] => j [10] => k [11] => l [12] => m [13] => n [14] => o [15] => p [16] => q [17] => r [18] => s [19] => t [20] => u [21] => v [22] => w [23] => x [24] => y [25] => z )
如您所見,我們已經找到了 A 到 Z 的所有字母。它們都存儲在$matches[0]
數組中。
總結:通過 preg_match,您可以在字符串中查找模式。如果您需要從模式中提取子字符串,則可以使用捕獲組,preferably by capturing an entire block of text. 如果要搜索所有匹配項,可以使用 preg_match_all。