1

我想从以下位置匹配和提取变量:{{variable:int}}

  • 变量可以是任何东西
  • :是分隔符
  • int将是一个整数 0-9

目前我有:preg_replace('!\{\{(\S+)\}\}!', "$1", $string) 它只完成了一半的工作,我仍然需要拆分:

谢谢!

4

3 回答 3

2

您需要一个非贪婪匹配 ( .*?):preg_replace('!\{\{(.*?):(\d)\}\}!')

于 2009-11-05T12:11:34.447 回答
1

采用

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

$1 将包含捕获的变量,$2 将包含捕获的整数

解释

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

[a-zA-Z]+ 表示至少一个字母(小写或大写字母)
后跟一个“:”
,后跟至少一个或多个数字 (0-9)

于 2009-11-05T12:10:42.757 回答
1

如果你想提取名称/值,我想你想使用 preg_match。

preg_match('!\{\{(.*?):(\d)\}\}!', $string, $matches);  
$varname = $matches[1];  
$val = $matches[2];  
于 2009-11-05T12:14:59.550 回答