读取PHP中单引号内的虚线字符串

时间:2014-10-04 13:52:15

标签: php regex scanf

在PHP中,我尝试剥离信息并将它们存储在$ sysp变量中,该变量来自名为$ freply的字符串,如下所示:

var id='E8ABFA19FDE2';
var sys_ver='17.37.2.49';
var app_ver='20.9.1.150';

使用PHP sscanf 以及以下参数:

sscanf($freply, "var sys_ver='%[^']'", $sysver);

然而,$ sysver中的空白结果就是我得到的。

更新 使用以下方法处理第一行:

sscanf($freply, "var id=' %[^']'", $ea);

给我一​​个正确的结果加载,如$ ea所示,显示E8ABFA19FDE2。 有人能告诉我哪里出错了吗? 尽管我使用PHP,但我猜这个问题也与Javascript或任何其他类C语言有关。

1 个答案:

答案 0 :(得分:1)

你所说的sscanf()是你的字符串是以文字字符var sys_ver...等开头的格式,然后你传递的是一个以var id...开头的字符串,它是NOPE'马上出去。

这有效:

sscanf($freply, "var id='E8ABFA19FDE2';\nvar sys_ver='%[^']'", $sysver);

或者这个:

foreach (explode("\n", $freply) as $line) {
    if (sscanf($line, "var sys_ver='%[^']'", $sysver)) break;
}

但真的sscanf()并不是这项工作的正确工具。只需使用preg_match()

preg_match("/var sys_ver='([^']+)'/", $freply, $matches);
$sysver = $matches[1];