Preg_replace将第二个参数添加到php函数中

时间:2013-04-17 17:37:42

标签: php preg-replace

当谈到preg_replace函数时,我仍然完全迷失了,所以如果有人帮我这个,我会很高兴。

我有一个字符串,可以包含对函数的调用:Published("today")我需要通过正则表达式将其转换为Published("today", 1)

我基本上需要通过正则表达式向函数添加第二个参数。 我不能使用str_replace,因为第一个参数可以是(必须是)字母数字文本。

2 个答案:

答案 0 :(得分:0)

$string = 'Published("today")';
$foo = preg_replace('/Published\("(\w+)"\)/', 'Published("$1", 1)', $string);

答案 1 :(得分:0)

preg_replace_callback应该完成我认为的工作。

<?php
$string = 'Published("today"); Published("yesterday"); Published("5 days ago");';

$callback = function($match) {
    return sprintf('%s, 1', $match[0]);
};

$string = preg_replace_callback(
    '~(?<=Published\()"[^"]+"(?=\))~',
    $callback,
    $string
);

echo $string;

/*
    Published("today", 1); Published("yesterday", 1); Published("5 days ago", 1);
*/