我有一个字符串。
$url = 'http://alarms.internal/image?host=database1&srv=IO_Recieved&view=1&source=0&start={TSTAMP:NOW-2D}&end={TSTAMP:NOW}';
查看网址,我想从中获取一些通配符(大括号内的任何内容' {'),并对它们执行一些功能。因此我插入了一些正则表达式来将它们拉出来。
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';
很抱歉,如果这很难理解,但对于如何做到这一点会有任何帮助。
干杯
答案 0 :(得分:0)
我建议使用preg_replace_callback()
代替这样做。通过使用回调,您可以将任何函数传递给它或直接在回调内修改返回值。
以下是一个示例实现:
$url = preg_replace_callback('~{[^}]*}~',
function($m) {
return timeConversion($m[0]);
}, $url);
echo $url;