代码之家  ›  专栏  ›  技术社区  ›  arik

PHP regex用函数运行替换表达式

  •  0
  • arik  · 技术社区  · 14 年前

    我有一个用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\u replace之类的东西来做这个?

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

    提前多谢了!

    2 回复  |  直到 11 年前
        1
  •  2
  •   Artefacto    14 年前
    preg_replace_callback('/{\\$video:(.+?)}/',
        function ($matches) use ($someObject) {
            return $someObject->processVideoSource($matches[1]);
        }, $text);
    
        2
  •  0
  •   Michael Robinson    14 年前
    preg_replace('/({\$[a-zA-Z]+:)|(})/', '', '{$video:path/to/my/video.mp4}');
    

    所以:

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