大家好,我正在尝试为PHP创建一个正则表达式,以使我能够获取报价和作者。如果一切都是一行,那么我就使它工作了,但是将其放到多行中的那一刻,它就停止了工作。我究竟做错了什么?
(\[quote\])(.*)(\|)(.*)(\[\/quote\])
Run Code Online (Sandbox Code Playgroud)
[quote]造船厂的沉默,街道上的沉默,哈根波特的船闸和码头将在您睡觉时抢劫您。|流行的儿童韵律
[quote]让您沉睡。|流行的儿童韵[/ quote]
使用s修饰符(如果在正则表达式分隔符之后附加)。另外,.*通过添加一个使您的非贪婪?:
preg_match_all("~\[quote\](.*?)\|(.*?)\[/quote\]~s", $s, $results, PREG_SET_ORDER);
Run Code Online (Sandbox Code Playgroud)
输出在$results:
[
[
"[quote]Silence in the boatyard, Silence in the street, The Locks and Quays of Haganport Will rob you while you sleep.|-popular children's rhyme[/quote]",
"Silence in the boatyard, Silence in the street, The Locks and Quays of Haganport Will rob you while you sleep.",
"-popular children's rhyme"
], [
"[quote]Silence you sleep.|-popular children's rhyme[/quote]",
"Silence you sleep.",
"-popular children's rhyme"
]
]
Run Code Online (Sandbox Code Playgroud)