Вопрос

Я хотел бы сопоставить и извлечь переменные из: {{variable:int}}

  • переменная было бы что угодно от А до Я
  • : является разделителем
  • интервал будет целое число 0-9

На данный момент у меня есть: preg_replace('!\{\{(\S+)\}\}!', "$1", $string)что делает только половину работы, мне все равно придется разделить на :.

Спасибо!

Это было полезно?

Решение

Если вы хотите извлечь имя/значение, я думаю, вам нужно использовать preg_match.

preg_match('!\{\{(.*?):(\d)\}\}!', $string, $matches);  
$varname = $matches[1];  
$val = $matches[2];  

Другие советы

Тебе необходимо не жадный соответствовать (.*?): preg_replace('!\{\{(.*?):(\d)\}\}!')

Использовать

{{([a-zA-Z]+):(\d+)}}

$1 будет содержать захваченную переменную, $2 будет содержать захваченное целое число.

Объяснение

{{([a-zA-Z])+:(\d+)}}

[a-zA-Z]+ означает как минимум еще один алфавит (маленький или прописные)
за которым следует ":"
за которым следует хотя бы одна или несколько цифр (0–9)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top