<p>在之前的文章中為大家帶來了《<a href="https://www.php.cn/php-ask-483648.html" target="_blank">PHP中怎樣執行正規表示式的搜尋和替換? </a>》,其中詳細的介紹了PHP中執行正規表示式搜尋和替換的相關知識,本篇我們繼續來看一下正規表示式中字串分割和轉義的相關知識,希望對大家有幫助! </p>
<p><img src="https://img.php.cn/upload/article/000/000/067/617f7f6f7bab3508.jpg" alt="PHP正規表示式之怎樣分割字串與轉義字串?" ></p>
<p>之前的文章中我們了解了PHP中執行全域正規表示式的匹配、偵測與給定模式相符的陣列元素、執行一個正規表示式的搜尋和取代這樣的運算我們可以透過<code>preg_match() </code>函數、<code>preg_match_all()</code>函數、<code>preg_grep()</code> 函數與<code>preg_replace()</code> 函數就能夠實現,使用正規表示式的主要目的就是為了透過簡單的辦法來實現強大的功能。 </p>
<p>其中對於正規表示式與字串之間的運算還有很多,其中就包含使用正規表示式分割字串,那接下來我們就一起來看一下,我們怎麼透過字元表達式來分割字串。 <br></p>
<p><code><strong><span style="font-size: 20px;">preg_split() </span></strong></code><strong><span style="font-size: 20px;">函數</span></strong></p>
<p>在PHP中 <code>preg_split()</code> 函數透過一個正規表示式來分割字串,該函數的語法格式如下:</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">array preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] )</pre><div class="contentsignin">登入後複製</div></div><p>其中需要注意的是:<br/></p><p> <code>#$pattern</code>表示用於匹配的模式,也即正規表示式;<code>$subject</code>表示要分隔的字串;<code>$limit</code>是個可選參數,如果指定,就將限制分隔得到的子字串最多只有limit 個,並且最後一個子字串將包含所有剩餘部分。 limit 值為 <code>-1</code>、<code>0</code> 或 <code>NULL </code>時都代表“不限制”,建議使用 NULL。 </p><p><code>$flags</code>是個可選參數,它有 3 個取值。若設定為 <code>PREG_SPLIT_NO_EMPTY</code>,則 preg_split() 將傳回分隔後的非空部分。若設定為 <code>PREG_SPLIT_DELIM_CAPTURE</code>,則分隔的模式中的括號表達式將被捕獲並傳回。若設定為 <code>PREG_SPLIT_OFFSET_CAPTURE</code>,則對於每一個出現的符合返回時會附加字串偏移量。 </p><p>這將會改變傳回數組中的每一個元素,使每個元素成為一個由第0 個元素為分隔後的子字串、第1 個元素為該子字串在subject 中的偏移量組成的數組。傳回值就是傳回使用 pattern 分割 subject 字串後所得到的子字串組成的陣列。 </p><p>接下來我們透過範例來看 preg_split() 函數的用法,範例如下:</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><?php
echo "<pre class="brush:php;toolbar:false">";
$subject = 'PHP中文网:http://www.php.cn/, baidu百度:http://www.baidu.com/';
$pattern = '/[\s,:]+/';
print_r( preg_split($pattern, $subject) );
print_r( preg_split($pattern, $subject, 3) );
?></pre><div class="contentsignin">登入後複製</div></div><p>輸出結果:<br/></p><p><img src="https://img.php.cn/upload/image/234/429/279/1635748311992399.png" title="1635748311992399.png" alt="PHP正規表示式之怎樣分割字串與轉義字串?"/></p><p></p><p><br/></p><p><img src="https://img.php.cn/upload/image/406/631/908/1635750264433447.png" title="1635750264433447.png" alt="PHP正規表示式之怎樣分割字串與轉義字串?"/></p><p></p><p><code><strong><span style="max-width:90%"></span></strong></code><strong><span style="font-size: 20px;"></span></strong></p><p>#範例如下:</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><?php
$str = 'father mother andyou';
var_dump($str);
$chars = preg_split('/ /', $str, -1, PREG_SPLIT_OFFSET_CAPTURE);
var_dump($chars);
?></pre><div class="contentsignin">登入後複製</div></div><p>輸出結果:</p><p><code></code><code></code>#由上述範例能夠看出,透過preg_split() 函數能夠完成透過一個真個表達式來分割字串。接下來我們來看一下,怎樣對正規表示式來進行轉義。 </p><p><br/></p><p>PHP preg_quote()<code></code><code></code><code># 函數</code><code></code>##普通字元包括沒有明確指定為元字符的所有可列印和不可列印字符,包括所有大小寫字母、數字、標點符號和一些符號。最簡單的正規表示式是用於搜尋字串相比較的單一普通字元。例如,單字元正則表達式/A/會始終符合字母 A。 </p><p>除普通字元之外,正規表示式還可以包含「元字元」。元字元可分為單字元字元和多重字元元字元。例如,元字元\d,它與數字字元相符。 <code></code>PHP <code>preg_quote()</code> 函數用來對正規表示式字串進行轉義,也就是在特殊字元前邊增加一個反斜線</p>\###,該函數的語法格式如下:###<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">preg_quote($str [, $delimiter = NULL])</pre><div class="contentsignin">登入後複製</div></div>###其中需要注意的是:#############$str###表示正規表示式字串;###$delimiter###是個可選參數,額外增加的需要轉義的字元。如果指定了### $delimiter ###參數,被指定的字元也會被轉義。這通常用於轉義 PCRE 函數使用的分隔符號。 ### / ###是最常見的分隔符號。 #########preg_quote() ###函數會在參數### $str ###提供的每個正規表示式的字元前面增加一個反斜線。這通常用於一些運行時字串需要作為正規表示式進行匹配的時候。 ###<p>正则表达式特殊字符有:<code>.</code> <code>\</code> <code>+</code> <code>*</code> <code>?</code> <code>[</code> <code>^</code> <code>]</code> <code>$</code> <code>(</code> <code>)</code> <code>{</code> <code>}</code> <code>=</code> <code>!</code> <code><</code> <code>></code> <code>|</code> <code>:</code> <code>-</code> 。要清楚<code>/</code>不是正则表达式特殊字符。</p><p>接下来我们通过示例来看一下使用 preg_quote() 函数对字符串进行转义,示例如下:</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><?php
$url = 'http://www.baidu.com/';
echo preg_quote($url) . "<br />";
echo preg_quote($url, "/") . "<br />";
$textbody = "baidu百度 is *very* good to study.";
$word = "*very*";
echo preg_replace( "/".preg_quote($word)."/", "<i>".$word."</i>", $textbody );
?></pre><div class="contentsignin">登入後複製</div></div><p>输出结果:<br/></p><p><img src="https://img.php.cn/upload/image/801/582/141/1635749241170496.png" title="1635749241170496.png" alt="PHP正規表示式之怎樣分割字串與轉義字串?"/></p><p>示例如下:</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><?php
$keywords = '$40 for a g3/400';
$keywords = preg_quote($keywords, '/');
echo $keywords; // 返回 \$40 for a g3\/400
?></pre><div class="contentsignin">登入後複製</div></div><p>输出结果:<br></p>
<p><img src="https://img.php.cn/upload/image/733/302/724/1635750498161054.png" title="1635750498161054.png" alt="PHP正規表示式之怎樣分割字串與轉義字串?"></p>
<p>上述示例中,便是通过preg_quote() 函数用来对正则表达式字符串进行转义。</p>
<p>大家如果感兴趣的话,可以点击《<a href="https://www.php.cn/course/list/29/type/2.html" target="_blank">PHP视频教程</a>》、《<a href="https://www.php.cn/course/59.html" target="_blank">正则表达式手册</a>》进行更多关于PHP和正则表达式知识的学习。</p>
以上是PHP正規表示式之怎樣分割字串與轉義字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!