Perl兼容正則表達式函數(shù)-PHP8知識詳解
導(dǎo)讀:本文學(xué)習(xí)的是在PHP8中,Perl兼容正則表達式函數(shù),主要講到了使用正則表達式對字符串進行匹配、使用正則表達式替換字符串的字串和使用正則表達式切分字符串。
永久美國免備案虛擬主機1元1天,15元1月,100元1年,1000元永久
站長在線旗下答案網(wǎng)站,全站所有題目,免費查看答案和答案解析
在PHP8中有兩類正則表達式函數(shù),一類是perl兼容正則表達式函數(shù),另一類是posix擴展正則表達式函數(shù)。二者區(qū)別不大,我們推薦使用Perl兼容正則表達式函數(shù)。
1、使用正則表達式對字符串進行匹配
用正則表達式對目標字符串進行匹配是正則表達式的主要功能。
完成這個操作需要用到preg_match()函數(shù)。這個函數(shù)是在目標字符串中尋找符號特定正則表達式規(guī)范的字符串的子串。
根據(jù)指定的模式來匹配文件名或字符串。它的語法格式如下:
preg_match(正則表達式,目標字符串,[數(shù)組])
其中,數(shù)組為可選參數(shù),是用于儲存匹配結(jié)果的數(shù)組。
利用preg_match()函數(shù)匹配字符串,示例代碼:
<?php
$pattern = '/[0-9]{4}-[0-9]{2}-[0-9]{2}/'; // 匹配日期格式:YYYY-MM-DD
$string = 'Today is 2023-08-19.';
if (preg_match($pattern, $string, $matches)) {
echo "匹配成功!";
print_r($matches);
} else {
echo "未找到匹配項!";
}
?>
以上代碼在php8中的運行結(jié)果為:
匹配成功!array ( [0] => 2023-08-19 )
在上述示例中,我們定義了一個正則表達式模式 $pattern ,該模式用于匹配符合日期格式 YYYY-MM-DD 的字符串。然后,我們將要匹配的字符串存儲在變量 $string 中。
接下來,我們使用 preg_match() 函數(shù)對 $string 進行匹配,并將匹配結(jié)果存儲在變量 $matches 中。
如果匹配成功,則輸出 "匹配成功!" 并打印出匹配的結(jié)果數(shù)組 $matches。否則,輸出 "未找到匹配項!"。
注意:preg_match() 函數(shù)只會返回第一個匹配項并且僅返回一個布爾值(0 或 1),而不會返回所有匹配項。如果你需要獲取所有匹配項,請使用 preg_match_all() 函數(shù)。
下面我們使用preg_match_all() 函數(shù)匹配字符串。
當使用 preg_match_all() 函數(shù)來匹配字符串時,您需要提供一個正則表達式作為模式,并指定要搜索的輸入字符串。該函數(shù)將返回所有符合模式的匹配結(jié)果。
以下是示例代碼:
<?php
$string = "Hello World, this is a test string.";
$pattern = "/[A-Za-z]+/";
$matches = [];
preg_match_all($pattern, $string, $matches);
print_r($matches[0]);
?>
在這個示例中,我們定義了一個輸入字符串 $string 和一個正則表達式模式 $pattern。模式 /[A-Za-z]+/ 表示匹配一個或多個字母字符。
然后,我們創(chuàng)建了一個空數(shù)組 $matches 來存儲匹配的結(jié)果。調(diào)用 preg_match_all() 函數(shù),并傳入模式、輸入字符串以及結(jié)果數(shù)組。函數(shù)執(zhí)行完后,所有符合模式的匹配項會被存儲在 $matches 數(shù)組中。
最后,我們使用 print_r() 函數(shù)打印出匹配的結(jié)果,即 $matches[0],它包含了所有匹配到的字符串。
運行以上代碼,輸出結(jié)果如下:
Array ( [0] => Hello [1] => World [2] => this [3] => is [4] => a [5] => test [6] => string )
2、使用正則表達式替換字符串的字串
如果需要對字符串的子串進行替換,可以使用preg_replace()函數(shù)來完成。語法格式如下:
preg_replace(正則表達規(guī)范,預(yù)替換字符串的子串,目標字符串,[替換個稅數(shù)])
當使用 preg_replace() 函數(shù)來替換字符串時,您需要提供一個正則表達式模式、要替換的新內(nèi)容以及要搜索的輸入字符串。該函數(shù)將在輸入字符串中找到所有匹配模式的部分,并用新內(nèi)容進行替換。
以下是示例代碼:
<?php
$string = "Hello World! This is a test string.";
$pattern = "/test/";
$replacement = "sample";
$newString = preg_replace($pattern, $replacement, $string);
echo $newString;
?>
在這個示例中,我們定義了一個輸入字符串 $string,一個正則表達式模式 $pattern(即 /test/),以及一個替換文本 $replacement(即 "sample")。
然后,我們調(diào)用 preg_replace() 函數(shù)并傳入模式、替換文本和輸入字符串。函數(shù)執(zhí)行完后,它會在輸入字符串中查找所有匹配模式 /test/ 的部分,并將其替換為 "sample"。
最后,使用 echo 語句輸出替換后的字符串 $newString。
以上代碼在PHP8中,運行結(jié)果為:
Hello World! This is a sample string.
請注意,preg_replace() 函數(shù)是通過正則表達式模式來匹配和替換字符串的。如果您想要替換一個具體的字符串而不是模式,請考慮使用 str_replace() 函數(shù)。
3、使用正則表達式切分字符串
使用正則表達式可以吧目標字符串,安照一定的正則規(guī)范切分成不同的子串。完成此操作需要用到strtok()函數(shù)。它的語法格式為:
strtok(正則表達式規(guī)范,目標字符串)
這個函數(shù)是指正則規(guī)范內(nèi)出現(xiàn)的字符為準,把目標字符串切分成不同的子串,并且存入數(shù)組。
當然!strtok()函數(shù)用于將字符串分割成小塊。下面是一個示例代碼,展示了如何使用strtok()函數(shù)來切割字符串:
<?php
$string = "Hello,World!This,is,a,test";
$delimiter = ",!";
$token = strtok($string, $delimiter);
while ($token !== false) {
echo $token . "<br>";
$token = strtok($delimiter);
}
?>
在上述示例中,我們首先定義了要切割的字符串$string和切割字符串的分隔符$delimiter。然后,我們使用strtok()函數(shù)來獲取第一個子字符串(即切片),并通過循環(huán)遍歷所有的子字符串。每當調(diào)用strtok()函數(shù)時,它會返回下一個切片。
以上代碼在PHP8中輸出結(jié)果為:
Hello
World
This
is
a
test
到此為止,本文學(xué)習(xí)的是在PHP8中,Perl兼容正則表達式函數(shù),主要講到了使用正則表達式對字符串進行匹配、使用正則表達式替換字符串的字串和使用正則表達式切分字符串就講解完了。
本文地址:http://003188.cn/perlzzbds.html
阿里云虛擬主機1G空間,120元一年
香港、美國虛擬主機100元一年,1000元永久
騰訊云雙十一0.4折起,2核8G5M三年僅700元,2核4G8M三年僅198元
猜你喜歡