我存儲在MySQL數據庫中的以下提取鍵/值值。preg_match_all從模板
問題是,我的正則表達式不提取多行字符串。
下面是代碼:
preg_match_all ("/%(\w+)%(.*)/", $msg, $matches);
它輸出:
[1]=>
array(3) {
[0]=>
string(5) "BASIC"
[1]=>
string(4) "TEXT"
[2]=>
string(9) "LARGETEXT"
}
[2]=>
array(3) {
[0]=>
string(18) " https://google.de"
[1]=>
string(13) " Hello world!"
[2]=>
string(6) " Hello"
}
在第二陣列僅 '你好' 被示出,而不是:
Hello
My name is ...
I am from ...
我tryed各種正則表達式,但我總是以相同的結果。
謝謝你很多。我會盡快將您的答案標記爲已接受。這解決了我的問題。 – user2933212
這兩種模式都是錯誤的。如果你有一個特殊字符的URL替換爲十六進製表示,如:http://domain.tld/fo%20%20lder/index.php?path = http%3A%2F%2Fotherdomain.tld?而不是使用'%',你應該使用換行符。 –
@CasimiretHippolyte:你不能說模式是錯誤的*,我建議基於原始模式的模式*不依賴於換行符。很容易在第一個正則表達式中添加錨點和MULTILINE修改器來修復它,然後它可以很容易地展開。 –