Intereting Posts
Как указать ориентацию местоположения сообщения FB через Graph API Отправка файла с iOS на PHP с помощью POST Добавление событий в календарь Outlook с помощью php-скрипта Используйте PHP для создания эскизов. (Обрезано до квадрата) Использование LIMIT в MySQL для ограничения результатов на основе значения столбца (PHP / MySQL) PHPExcel как установить значение ячейки динамически Перенаправление пользователя обратно на первоначально нужный URL после входа в систему Использовать PHP в скрипте для отправки данных также Диспетчер тегов Google Как предоставить Apache доступ к папкам на MAC OSx? Возвращение переменной sql в PHP Как получить доступ к динамическому свойству с помощью переменной? Обновите содержимое div только в том случае, если в базу данных добавлен новый контент Один элемент викторины на страницу (программа тестирования php / mysql) Скрыть index.php (или index.html) URL-адреса Предварительный просмотр функции AJAX в раскрывающемся списке

PHP заменяет строку со значениями из массива

У меня есть строка, такая как:

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';