3

PHPとpreg_matchを使用して、区切り文字の後に行末までの文字列を取得しようとしています。これらは私のコードです:

<?php
$stringa = <<<EOT
var1=Ciao
var2=Variabile
var3=We
EOT;
preg_match("#var2=(.*?)\n#", $stringa, $boh);
print_r($boh);
?>

これは機能しますが、最後の行では機能しません。正規表現でvar2var3に置き換えると、生成された配列は空になります。

4

4 に答える 4

3

改行または文字列の末尾に一致するように、修飾子である複数行モードを使用します。m$

preg_match('#var2=(.*?)$#m', $stringa, $boh);
于 2013-07-24T14:10:43.990 に答える
3

交互に使用:

#var2=(.*?)(\n|$)#
           ^  ^^^
于 2013-07-24T14:07:58.377 に答える
1

その理由は、適切に一致させるために「We」の後に改行が必要だからです。

<?php
$stringa = <<<EOT
var1=Ciao
var2=Variabile
var3=We

EOT;
preg_match("#var3=(.*?)\n#", $stringa, $boh);
print_r($boh);
?>
于 2013-07-24T14:08:49.847 に答える
0

ドットを使用する代わりに、[^\n]すべての改行を除外することを使用できます。

preg_match('~(?<=var3=)[^\n]+~', $stringa, $boh);
于 2013-07-24T14:26:52.773 に答える