В 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-подобным языком.
Что вы говорите 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];
Других решений пока нет …