Php动态替换字符串中的占位符变量
我想动态替换字符串中的占位符变量Php动态替换字符串中的占位符变量,php,Php,我想动态替换字符串中的占位符变量 str_replace("\$", $data["Whatever follows the \$], $variable); \$表示占位符变量,例如\$ID 我希望用其替换的数据位于数组中$\ID应替换为$data['ID'] 例如,如果我有一个字符串,上面写着“ID是\$ID,name是\$name”。我想用我的$data对象中的相关数据替换\$ID和\$name$\ID将是$data['ID']等等 这需要是动态的。我不想硬编码它,用$data['ID'
str_replace("\$", $data["Whatever follows the \$], $variable);
\$
表示占位符变量,例如\$ID
我希望用其替换的数据位于数组中$\ID
应替换为$data['ID']
例如,如果我有一个字符串,上面写着“ID是\$ID
,name是\$name
”。我想用我的$data
对象中的相关数据替换\$ID和\$name$\ID
将是$data['ID']
等等
这需要是动态的。我不想硬编码它,用$data['ID']
替换\$ID
。用于获取$data中数据的键应等于\$
后面的值
我不知道如何像前面提到的那样动态执行此操作,也不知道如何为字符串中的每个\$
执行此操作。使用printf()或sprintf()
str_replace("\$", $data["Whatever follows the \$], $variable);
如果用数字标记占位符,则可以在字符串中重复任意次数
sprintf("This is my test string. Here's a placeholder: %1$s, and a another: %2$s, First one again: %1$s", $var1, $var2);
试试这个:
$string = 'some $ID $PARAM string';
$values = array("ID" => "idparam", "PARAM" => "p");
preg_match_all("/\\\$(?<name>[a-zA-Z0-9]+)/", $string, $matches);
foreach($matches["name"] as $m) {
if(!isset($values[$m])) {
//TODO handling
continue;
}
$string = str_replace('$'.$m, $values[$m], $string);
}
var_dump($string);
$string='some$ID$PARAM string';
$values=array(“ID”=>“idparam”、“PARAM”=>“p”);
预匹配所有(“/\\$(?[a-zA-Z0-9]+)/”,$string,$matches);
foreach($matches[“name”]as$m){
如果(!isset($values[$m])){
//待办事项处理
继续;
}
$string=str_replace(“$”.$m,$value[$m],$string);
}
变量转储($string);
$values
中的键应该是不带美元符号的参数名称。这将为您完成任务
为什么不使用printf?