我有以下文本,想要用##替换所有开始和结束的instace,如何为preg_replace php准备正则表达式。 实施例
我们遇到问题## anytext ##并会尽快更新 关于这个问题## textsomethingelse ##
我的问题如何用特定文本替换## anytext ##的所有实例?
答案 0 :(得分:3)
您可能需要使用preg_replace_callback
执行此任务。
一个例子:
<?php
$replacements = array(
'anytext' => 'ANYTEXT',
'else' => 'ELSE',
);
echo preg_replace_callback(
'/##(.*?)##/',
create_function(
'$matches',
'global $replacements; return $replacements[ $matches[1] ];'
),
'We are encountering a problem ##anytext## and will update you soon regarding this problem ##else##'
);
注意:此示例使用create_function
,但如果您使用的是PHP&gt; = 5.3,则最好使用闭包。
答案 1 :(得分:-1)
想知道为什么全局标志不适用于简单的preg_replace
。像这样:
<?php
$string = 'We are encountering a problem ##anytext## and will update you soon regarding this problem ##textsomethingelse##';
$pattern = '/##anytext##/g';
$replacement = 'with the service';
echo preg_replace($pattern, $replacement, $string);
?>
这将输出:
We are encountering a problem with the service and will update you soon regarding this problem ##textsomethingelse##