PHP正则表达式替换为函数本身运行的表达式
我有一个用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:
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);