在PHP中,要處理多行文本,可以使用preg_match_all()
函數(shù)與適當(dāng)?shù)恼齽t表達(dá)式模式。默認(rèn)情況下,.
字符不會(huì)匹配換行符。為了在正則表達(dá)式中包含換行符,需要使用(?s)
標(biāo)志,它會(huì)讓.
字符匹配任何字符,包括換行符。
下面是一個(gè)處理多行文本的示例:
<?php
$text = "This is line 1.\nThis is line 2.\nThis is line 3.";
// 正則表達(dá)式模式,匹配任意行,捕獲每一行的內(nèi)容
$pattern = '/^(?s).*$/m';
// 使用preg_match_all()函數(shù)查找所有匹配項(xiàng)
preg_match_all($pattern, $text, $matches);
// 輸出匹配到的每一行
print_r($matches[0]);
?>
在這個(gè)示例中,我們使用了/^(?s).*$/m
正則表達(dá)式模式。這個(gè)模式的含義如下:
^
:表示行的開始(?s)
:讓.
字符匹配任何字符,包括換行符.*
:匹配任意數(shù)量的任意字符$
:表示行的結(jié)束/m
:多行模式,讓^
和$
分別匹配每一行的開始和結(jié)束preg_match_all()
函數(shù)會(huì)返回一個(gè)二維數(shù)組,其中第一個(gè)元素包含所有匹配到的字符串,第二個(gè)元素包含每個(gè)匹配項(xiàng)在原始文本中的偏移量。在這個(gè)例子中,$matches[0]
將包含一個(gè)數(shù)組,其中每個(gè)元素都是文本中的一行。