Php 将数据输入回preg_match_all
我有一根绳子Php 将数据输入回preg_match_all,php,regex,Php,Regex,我有一根绳子 $url = 'http://alarms.internal/image?host=database1&srv=IO_Recieved&view=1&source=0&start={TSTAMP:NOW-2D}&end={TSTAMP:NOW}'; 查看url,我想从中提取一些通配符,任何位于花括号“{”内的内容,并对它们执行一些函数。因此,我插入了一些正则表达式来提取它们 preg_match_all('/\{[^}]*\}/', $ur
$url = 'http://alarms.internal/image?host=database1&srv=IO_Recieved&view=1&source=0&start={TSTAMP:NOW-2D}&end={TSTAMP:NOW}';
查看url,我想从中提取一些通配符,任何位于花括号“{”内的内容,并对它们执行一些函数。因此,我插入了一些正则表达式来提取它们
preg_match_all('/\{[^}]*\}/', $url, $result);
这将以数组形式返回以下内容
array(2)
{
[0]=> string(21) "{TSTAMP:NOW-2D}"
[1]=> string(18) "{TSTAMP:NOW}"
}
这一切都很好,很漂亮,很自然,但是我很好奇如何将返回值插入到原始字符串中
function timeConversion($string) {
...
...
return $time;
}
$result1 = $result[0][0];
$result2 = $result[0][1];
$time1 = timeConversion($result1);
$time2 = timeConversion($result2);
在我修改了这两个变量之后,我希望有一种方法可以让我的初始字符串看起来像下面这样
echo $url;
它返回
$url = 'http://alarms.internal/image?host=database1&srv=IO_Recieved&view=1&source=0&start=TIME10-45-25DATE10-02-2015&end=TIME10-45-25DATE12-02-2015';
很抱歉,如果这很难理解,但是对于如何实现这一点,任何帮助都将非常有用
干杯我建议改为使用。通过使用回调,您可以向其传递任何函数或直接在回调中修改返回值
下面是一个示例实现:
$url = preg_replace_callback('~{[^}]*}~',
function($m) {
return timeConversion($m[0]);
}, $url);
echo $url;
这正是我想要的。干杯