与变量一起使用时,php preg_match失败

时间:2014-04-25 12:34:24

标签: php regex

对不起,我在某个地方犯了一个可怕的错误,但这就是当前的情况:

在php中我有:

$ln = "A/RADIUS ADMITS VALUE 20";
$trg = "A/RADIUS";
$matches = array();
$zz = preg_match('#$trg\sADMITS\s(VALUE)\s([^\s]+)#',$ln,$matches);

我想捕捉没有引号的单词"VALUE"和最后一个单词,这里是字符串20,由([^ \ s] +)给出。那不是一次重复的空白吗?

但是$zz为0,表示没有匹配且$matches为空。我也试过

 $zz = preg_match('#'.$trg.'\sADMITS\s(VALUE)\s([^\s]+)#',$ln,$matches);

同样的问题。

我愚蠢地犯了哪个错误?

1 个答案:

答案 0 :(得分:1)

您正在使用单引号将$trg变量嵌入字符串中,这仅在使用双引号括起字符串时才有效。这应该有效:

$zz = preg_match("#$trg\sADMITS\s(VALUE)\s([^\s]+)#",$ln,$matches);