替换与特定模式匹配的字符串的一部分

时间:2016-09-03 11:24:32

标签: php regex preg-replace

我有一个字符串 -

vessel_type='##some_key##' AND vessel_name= '##other_key##'

我希望将其替换为 -

vessel_type='{$_POST['some_key']}' AND vessel_name='{$_POST['other_key']}'

some_keyother_key可以是任意随机文字。我怎么做?像preg_replace()这样的东西有帮助吗?

感谢。

2 个答案:

答案 0 :(得分:0)

preg_replace_callback的解决方案:

$_POST['pew'] = 'LOL!';
$str = 'i said ##pew##';
var_dump(preg_replace_callback('/##(\w+)##/', function($v) { return $_POST[$v[1]]; }, $str));
// string(11) "i said LOL!" 

答案 1 :(得分:0)

您可以使用任意一侧##包围的捕获组:

$re = '/##([^#]+)##/'; 
$str = "vessel_type='##some_key##' AND vessel_name= '##other_key##'"; 
$subst = '{$_POST["$1"]}'; 

$result = preg_replace($re, $subst, $str);

//=> vessel_type='{$_POST["some_key"]}' AND vessel_name= '{$_POST["other_key"]}' 

RegEx Demo