php替换字符串类型参数=值

php替换字符串类型参数=值,php,string,replace,Php,String,Replace,我有一个来自db的字符串:$text= parameter1=value1 parameter2=value2 otherparemeter=othervalue 我需要一个函数来用新值替换一个参数,但如果参数不存在;必须添加到字符串中 示例:updatestring($text,“parameter1”,“newvalue”): 结果: parameter1=newvalue parameter2=value2 otherparemeter=othervalue parameter1=va

我有一个来自db的字符串:
$text=

parameter1=value1
parameter2=value2
otherparemeter=othervalue
我需要一个函数来用新值替换一个参数,但如果参数不存在;必须添加到字符串中

示例:
updatestring($text,“parameter1”,“newvalue”):

结果:

parameter1=newvalue
parameter2=value2
otherparemeter=othervalue
parameter1=value1
parameter2=value2
otherparemeter=othervalue
myparameter=myvalue
或者:
updatestring($text,“myparameter”,“myvalue”):

结果:

parameter1=newvalue
parameter2=value2
otherparemeter=othervalue
parameter1=value1
parameter2=value2
otherparemeter=othervalue
myparameter=myvalue

谢谢

如果每个参数和值都在自己的行上,这可能会起作用

function updatestring($text, $param1, $param2)
{
    if( stristr($text, $param1.'=') ) $text = preg_replace("`$param1=.*\n`iU", "$param1=$param2".PHP_EOL, $text);
    else $text .= PHP_EOL.$param1.'='.$param2;
    return $text;
}

给定输入的格式,您应该能够将数据解析成一个易于修改和重新格式化的结构

也许是这样的:

$a =<<<EOF
parameter1=value1
parameter2=value2
otherparemeter=othervalue
EOF;

function replacevalue($text, $k, $v){
    $dat = parse_ini_string($text);
    $ret = "";
    if(isset($dat[$k])){
        $dat[$k] = $v;
        foreach($dat as $prop=>$val){
            $ret.= $prop."=".$val."\n";
        }
        return $ret;
    }
}
echo replacevalue($a, "parameter1", "Hello World");

$a=谢谢@Orangepill;我已经纠正了你的功能;现在它开始工作了

function replacevalue($text, $k, $v){

    $dat = parse_ini_string($text);
    $ret = "";
    if(isset($dat[$k])){
        $dat[$k] = $v;
    } else {
          $dat[$k] = $v;
      }
     foreach($dat as $prop=>$val){
         $ret.= $prop."=".$val."\n";
     }
     return $ret;
}

不使用str_replace,因为我只需要替换值部分或添加新行;我想我需要正则表达式
if(strpos($text,$yourParam)!==false){//str_replace()…}else{$text.=PHP_EOL.$yourParam.'='.$yourValue;}
hello它正在添加一个值字符串;它正在取代;谢谢你的帮助!结果:参数1=value1newvalue