regex — читать пунктирную строку внутри одинарной кавычки в переполнении стека

В PHP я пытаюсь удалить информацию и сохранить ее в переменной $ sysver из строки с именем $ 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-подобным языком.

0

Решение

Что вы говорите sscanf() Ваша строка отформатирована, начиная с буквенных символов var sys_ver... и т.д., то вы передаете ему строку, которая начинается с var id... и это не работает прямо сейчас.

Это работает:

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];
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]