当谈到preg_replace函数时,我仍然完全迷失了,所以如果有人帮我这个,我会很高兴。
我有一个字符串,可以包含对函数的调用:Published("today")
我需要通过正则表达式将其转换为Published("today", 1)
我基本上需要通过正则表达式向函数添加第二个参数。 我不能使用str_replace,因为第一个参数可以是(必须是)字母数字文本。
答案 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);
*/