str_replace在函数中的foreach内部

I am trying to update a block of code with value's sent through a form however I am having trouble updating the whole block of code. The number of inputs change based on the code. For example:

.btn-primary{
  color: @color;
  font-style: none;
  background-color: @background-color;
  transition: all .75s;
  text-transform: uppercase;
  font-weight: @font-weight;
   &:hover{
    background-color: darken(@background-color, 10%);
    font-style: none;
   color: @color; 
  }
}

I am able to sucessfully find the @ variables and display the correct number of <input>'s based off the code. The problem I am having is having my foreach loop run through each $_POST value and updating the code. The best result I have been able to get is the first $_POST value but then it cuts off.

function replace_code($code){
 foreach($_POST as $name => $value){
  return str_replace($name, htmlentities($value), htmlentities($code));
 }
}

In the case of .btn-primary when I fill out my inputs and submit the form the best I can get is the first value to update and that is it. If I were to put #fff in the @color field and other values into @background-color and @font-weight and run my function once submit is set, I get the output of.

.btn-primary{
 color: #fff;
 font-style: none;
 background-color: @background-color;
 transition: all .75s;
 text-transform: uppercase;
 font-weight: @font-weight;
  &:hover{
   background-color: darken(@background-color, 10%);
   font-style: none;
   color: #fff; 
  }
 }

Any idea's on how I can get that foreach loop to keep updating the code.

The return should be after the foreach loop, since it's inside the loop it will exit the function on first loop

function replace_code($code){
 foreach($_POST as $name => $value){
  $code = str_replace($name, htmlentities($value), $code);
 }

return htmlentities($code);
}

You're issuing a return which is terminating your function. Either you need to call each $_POST separately to that function (inefficient) or you need to parse the data into a data structure

function replace_code($code){
 $data = array();
 foreach($_POST as $name => $value){
  $data[$name] = str_replace($name, htmlentities($value), htmlentities($code));
 }
 return $data;

}

Your PHP function replace only the first value, you have to loop it:

function replace_code($code){
    //best function
    $from = array();
    $to = array();
    foreach($_POST as $name => $value) {
        $from[] = $name;
        $to[] = htmlentities($value);
    }
    return str_replace($from, $to, $code);
}

function replace_code($code){
    foreach($_POST as $name => $value) {
        $code = str_replace($name, htmlentities($value), $code);
    }
    return $code;
}

Use htmlentities if you need it

If you want to do multiple replacements, you can give str_replace arrays of the old and new strings, you don't need to use a loop.

function replace_code($code) {
    $names = array_keys($_POST);
    $values = array_map('htmlentities', array_values($_POST));
    return str_replace($names, $values, $code);
}