Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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正则表达式替换为函数本身运行的表达式_Php_Function_Replace_Expression - Fatal编程技术网

PHP正则表达式替换为函数本身运行的表达式

PHP正则表达式替换为函数本身运行的表达式,php,function,replace,expression,Php,Function,Replace,Expression,我有一个用PHP解析的简单文本。在该文本中,我有时使用以下语法: Here's the text... {$video:path/to/my/video.mp4} and here the text goes on. 现在,我需要的是,通过正则表达式,用返回的字符串替换这个{$video:path/to/my/video.mp4}:$someObject->processVideoSource('path/to/my/video.mp4')。所以,你看,我需要找到这些表达式,从{$video:

我有一个用PHP解析的简单文本。在该文本中,我有时使用以下语法:

Here's the text... {$video:path/to/my/video.mp4} and here the text goes on.
现在,我需要的是,通过正则表达式,用返回的字符串替换这个
{$video:path/to/my/video.mp4}
$someObject->processVideoSource('path/to/my/video.mp4')。所以,你看,我需要找到这些表达式,从
{$video:
}
中筛选源代码,然后在该源代码上运行一个函数,替换整个表达式。我怎样才能用preg_replace或类似的东西做到这一点

请记住,我在解析的文本文件中有不同的表达式实例,每个视频都有自己的源。请原谅我选错了标题^^

提前多谢

preg_replace('/({\$[a-zA-Z]+:)|(})/', '', '{$video:path/to/my/video.mp4}');
因此:


我认为不需要漏掉“{}”,只需要漏掉“$”。至少,在不转义“{}”的情况下测试它可以很好地工作(但同样,必须转义$!)@Soap谢谢,事实上我必须转义正则表达式的
$
,因为它与表达式的结尾相匹配。在这种情况下,不必转义
{
}
。“{和}是文字字符,除非它们是有效正则表达式标记(例如{n}量词)的一部分。”()
$path = preg_replace('/({\$[a-zA-Z]+:)|(})/', '', '{$video:path/to/my/video.mp4}');
$someObject->processVideoSource($path);
preg_replace_callback('/{\\$video:(.+?)}/',
    function ($matches) use ($someObject) {
        return $someObject->processVideoSource($matches[1]);
    }, $text);