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
Author by
Yeak
Updated on June 27, 2022Comments
-
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 becity=>New York