phpregexpreg-replacepreg-matchstr-replace

PHP replace string with values from array


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


Solution

  • 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);