PHP replace string with values from array

17,551

Solution 1

Can you try this,

    $string ="Hello <%First Name%> <%Last Name%> welcome";
    preg_match_all('~<%(.*?)%>~s',$string,$datas);
    $Array = array('0' => array ('First Name' => 'John', 'Last Name' => 'Smith' ));
    $Html =$string;
    foreach($datas[1] as $value){           
        $Html =str_replace($value, $Array[0][$value], $Html);
    }
    echo str_replace(array("<%","%>"),'',$Html);

Solution 2

$array = array('<%First Name%>' => 'John', '<%Last Name%>' => 'Smith');
$result = str_replace(array_keys($array), array_values($array), $textData['text']);

Solution 3

You can use an array for both the search and replace variables in str_replace

$search = array('first_name', 'last_name');
$replace = array('John', 'Smith');

$result = str_replace($search, $replace, $string);

Solution 4

You could use str_replace

$replacedKeys = array('<%First Name%>','<%Last Name%>');

$values = array('John','Smith');

$result = str_replace($replacedKeys,$values,$textData['text']);

Solution 5

$string = "Hello <%First Name%> <%Last Name%> welcome";
$matches = array(
    'First Name' => 'John',
    'Last Name' => 'Smith'
);

$result = preg_replace_callback('/<%(.*?)%>/', function ($preg) use ($matches) { return isset($matches[$preg[1]]) ? $matches[$preg[1]] : $preg[0]; }, $string);            

echo $result;
// Hello John Smith welcome
Share:
17,551
Yeak
Author by

Yeak

Updated on June 27, 2022

Comments

  • Yeak
    Yeak almost 2 years

    I have a string such as:

       Hello <%First Name%> <%Last Name%> welcome
    

    and I have a array

     [0] => Array
        (
            [First Name] => John
            [Last Name] => Smith
        )
    

    What I need to do is take the string and replace the words in <% with the actual text from the array

    So my output would be

       Hello John Smith welcome
    

    Im not sure how to accomplish this but I cant even seem to replace it with regular text

    $test = str_replace("<%.*%>","test",$textData['text']);
    

    Sorry I should of mentioned that the array keys may vary as well as the <%First Name%>

    so it could even be <%city%> and the array can be city=>New York