Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将数据输入回preg_match_all_Php_Regex - Fatal编程技术网

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;

这正是我想要的。干杯