0

当谈到 preg_replace 功能时,我仍然完全迷失了,所以如果有人帮助我完成这个功能,我会非常高兴。

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

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

4

2 回答 2

0
$string = 'Published("today")';
$foo = preg_replace('/Published\("(\w+)"\)/', 'Published("$1", 1)', $string);
于 2013-04-17T17:43:41.407 回答
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);
*/
于 2013-04-17T17:47:07.373 回答