У меня есть строка, такая как:
Hello <%First Name%> <%Last Name%> welcome
и у меня есть массив
[0] => Array ( [First Name] => John [Last Name] => Smith )
Что мне нужно сделать, это взять строку и заменить слова в <% на фактический текст из массива
Поэтому мой вывод будет
Hello John Smith welcome
Я не уверен, как это сделать, но я даже не могу заменить его обычным текстом
$test = str_replace("<%.*%>","test",$textData['text']);
К сожалению, я должен упомянуть, что ключи массива могут отличаться, а также <%First Name%>
поэтому он может даже быть <%city%>
а массив может быть city=>New York
Можете ли вы попробовать это,
$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);
$array = array('<%First Name%>' => 'John', '<%Last Name%>' => 'Smith'); $result = str_replace(array_keys($array), array_values($array), $textData['text']);
Вы можете использовать массив для поиска и замены переменных в str_replace
$search = array('first_name', 'last_name'); $replace = array('John', 'Smith'); $result = str_replace($search, $replace, $string);
Вы можете использовать str_replace
$replacedKeys = array('<%First Name%>','<%Last Name%>'); $values = array('John','Smith'); $result = str_replace($replacedKeys,$values,$textData['text']);
Вы можете использовать это:
$result = preg_replace_callback('~<%(First|Last) Name)%>~', function ($m) { return $yourarray[$m[1] . ' Name']; } ,$str);
или очень простой (и, вероятно, более эффективный), используйте ответ Брайана H. (и замените строки поиска на <%First Name%>
и <%Last Name%>
).
$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
echo ' Hello '.$array[0][First Name].' '.$array[0][Last Name].' welcome';