PHP多行正则表达式

Dim*_*dis 1 php regex

大家好,我正在尝试为PHP创建一个正则表达式,以使我能够获取报价和作者。如果一切都是一行,那么我就使它工作了,但是将其放到多行中的那一刻,它就停止了工作。我究竟做错了什么?

(\[quote\])(.*)(\|)(.*)(\[\/quote\])
Run Code Online (Sandbox Code Playgroud)

[quote]造船厂的沉默,街道上的沉默,哈根波特的船闸和码头将在您睡觉时抢劫您。|流行的儿童韵律

[quote]让您沉睡。|流行的儿童韵[/ quote]

tri*_*cot 5

使用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)