与变量一起使用时,php preg_匹配失败
对不起,我在某处犯了一个可怕的错误,但情况是这样的: 在php中,我有:与变量一起使用时,php preg_匹配失败,php,regex,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,表示
$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);
同样的问题
我愚蠢地犯的错误在哪里?您正在使用单引号将
$trg
变量嵌入字符串中,这仅在使用双引号括住字符串时有效。这应该起作用:
$zz = preg_match("#$trg\sADMITS\s(VALUE)\s([^\s]+)#",$ln,$matches);
.@H2Ooooo很奇怪,我可以确认它按预期工作。请参阅:使用单引号然后使用“.”表示变量无效,将变量嵌入双引号字符串有效。非常感谢。还有一个问题,关于$zz=preg_match(“#”。$trg.\sADMITS\s(VALUE)\s([^\s]+)#,$ln,$matches);失败:这是PHP中的错误吗?我应该提交一份报告吗?