scanf — php sscanf и запятая

У меня проблемы с PHP Sscanf функция и запятая. Мне нужно извлечь 4 значения, как этот рабочий пример делает:

<?php
$format = '%s %s, blabla %ih blabla %ih';
$input = 'blabla 08-06-2016 blabla 14h blabla 17h';
$result = sscanf($input, $format);
var_dump($result);

выход:

array (size=4)
0 => string 'blabla' (length=10)
1 => string '08-06-2016' (length=10)
2 => int 14
3 => int 17

но мой реальный пример включает в себя один символ запятой, и я не получаю его на работу:

<?php
$format = '%s %s, blabla %ih blabla %ih';
$input = 'blabla 08-06-2016, blabla 14h blabla 17h';
$result = sscanf($input, $format);
var_dump($result);

выход:

array (size=4)
0 => string 'blabla' (length=10)
1 => string '08-06-2016,' (length=11)
2 => null
3 => null

Это очень просто, но я не могу найти решение … Запятая — зарезервированное слово?

ОБНОВЛЕНИЕ 1:

Извините, я забыл упомянуть об этом:
Я хочу использовать строковый шаблон, хранящийся в $ format, в качестве шаблона и для sprintf: если я изменю его, включая regexp, он не будет совместим со sprintf, я ошибаюсь?
Я предположил, что один и тот же шаблон строки может использоваться в двух направлениях: перенос и распаковка: очень полезно! … может быть, это невозможно с запятой?

Спасибо 🙂

1

Решение

Это решит вашу проблему читать разделенный запятыми ввод с помощью scanf.

$format = '%s %20[^,], blabla %ih blabla %ih'; или какая-то другая максимальная длина, 20 произвольно, так как у меня нет контекста в вашем приложении.

0

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

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

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