PHP регулярное выражение заменить выражение с функцией, выполняемой на его части - PullRequest
0 голосов
/ 15 августа 2010

У меня есть простой текст, который анализируется с помощью 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 или чем-то подобным?

Пожалуйста, имейте в виду, что у меня есть различные экземпляры этого выражения в текстовом файле, который я анализирую, и что у каждого видео есть свой собственный источник.И извините за неправильно выбранный заголовок ^^

Большое спасибо заранее!

Ответы [ 2 ]

2 голосов
/ 15 августа 2010
preg_replace_callback('/{\\$video:(.+?)}/',
    function ($matches) use ($someObject) {
        return $someObject->processVideoSource($matches[1]);
    }, $text);
0 голосов
/ 15 августа 2010
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);
...