簡體   English   中英

替換與特定模式匹配的字符串的一部分

[英]Replace part of a string that matches a specific pattern

我有一個字符串 -

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()類的東西可以幫忙嗎?

謝謝。

使用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!" 

您可以使用任何一方都被##包圍的捕獲組:

$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演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM