在PHP 中,使用正則表達式進行模式匹配時,通常會用到preg_match()或preg_match_all()函數。這些函數會將匹配的結果存儲在$matches變量中。通過查看$matches變量的內容,我們可以了解正則表達式是如何匹配輸入字符串的。
本文將演示如何輸出$matches變量,以便查看正則匹配的具體結構和內容。我們還會討論如何有效地使用print_r()或var_dump()函數來檢查$matches數組。
在PHP 中,常用的正則匹配函數有:
preg_match() : 用於執行一次正則匹配。
preg_match_all() : 用於執行多次正則匹配。
這兩個函數的語法如下:
preg_match($pattern, $subject, $matches, $flags = 0, $offset = 0);
preg_match_all($pattern, $subject, $matches, $flags = 0, $offset = 0);
其中, $pattern是正則表達式, $subject是待匹配的字符串, $matches是用來存儲匹配結果的數組。
假設我們有以下的PHP 代碼,通過正則表達式提取一個URL 中的域名部分。我們將使用preg_match()函數,並輸出$matches變量的內容。
<?php
// 定義正則表達式,用於匹配 URL
$pattern = "/https?:\/\/([a-zA-Z0-9.-]+)/";
// 輸入的 URL 字符串
$url = "https://www.example.com/path/to/resource";
// 使用 preg_match() 執行正則匹配
preg_match($pattern, $url, $matches);
// 輸出 $matches 的內容
print_r($matches);
?>
$pattern是一個正則表達式, https?:\/\/([a-zA-Z0-9.-]+) ,它用於匹配URL。
$url是待匹配的字符串,這裡我們用的是https://www.example.com/path/to/resource 。
preg_match()函數執行正則匹配,將匹配到的結果存儲在$matches數組中。
最後,我們使用print_r()函數來輸出$matches數組的內容。
運行上述代碼後,輸出結果可能如下:
Array
(
[0] => https://www.example.com
[1] => www.example.com
)
$matches[0]包含完整的匹配結果,即整個URL ( https://www.example.com ).
$matches[1]包含第一個捕獲組的結果,即域名部分( www.example.com ).
如果你想將URL 中的域名替換為m66.net ,可以在正則表達式匹配之後進行替換。例如: