我存储在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修改器来修复它,然后它可以很容易地展开。 –