我正在尝试使用PHP和preg_match在分隔符之后获取字符串到行尾。这些是我的代码:
<?php
$stringa = <<<EOT
var1=Ciao
var2=Variabile
var3=We
EOT;
preg_match("#var2=(.*?)\n#", $stringa, $boh);
print_r($boh);
?>
这可行,但不适用于最后一行,如果我在正则表达式中将 var2 替换为 var3 ,则生成的数组将为空。
答案 0 :(得分:3)
使用交替:
#var2=(.*?)(\n|$)#
^ ^^^
答案 1 :(得分:3)
使用多行模式m
修饰符,以便$
匹配换行符或字符串结尾:
preg_match('#var2=(.*?)$#m', $stringa, $boh);
答案 2 :(得分:1)
原因是你需要在“我们”之后换行才能正确匹配:
<?php
$stringa = <<<EOT
var1=Ciao
var2=Variabile
var3=We
EOT;
preg_match("#var3=(.*?)\n#", $stringa, $boh);
print_r($boh);
?>
答案 3 :(得分:0)
您可以使用排除所有换行符的[^\n]
代替使用该点:
preg_match('~(?<=var3=)[^\n]+~', $stringa, $boh);