2013-09-12 2 views
0

первый str_replace работает нормально, но следующие два не обрабатываются. Я тестировал заменяющие переменные и заменяющую строку все присутствующие/эхо. мне нужен уникальный $body. для каждого?php multiple str_replace, заменен только первый экземпляр

 $body.= "--$mime_boundary\n"; 
     $body.= "Content-Type: text/html; charset=\"UTF-8\"\n"; 
     $body.= "Content-Transfer-Encoding: 7bit\n\n";  
     $body.= str_replace("%%user%%",$en['user'],$html_content); 
     $body.= str_replace("%%confcode%%",$en['confcode'],$html_content); 
     $body.= str_replace("%%memb_id%%",$en['memb_id'],$html_content);  
     $body.= "\n\n"; 
     $body.= "--$mime_boundary--\n"; 
+0

Нет, вам не нужны уникальные переменные для хранения результата результатов str_replace(). Что выглядит $ html_content и значения в массиве $ en? –

+0

$ html_content - это html 'файл $ html_content = file_get_contents ('/ emails/welcome.tpl'); '$ en ['confcode']' и '$ en ['memb_id']' являются числами. Я сделал эхо, и значения присутствуют. – acctman

+0

Итак, что именно возвращаются во втором вызове, если вы эхо их на экран? –

ответ

1

http://php.net/manual/en/function.str-replace.php

Попробуйте вместо этого. Я думаю, что вы можете столкнуться с некоторыми проблемами, если вы заменяете предыдущее неизменяемое значение.

$body.= "--$mime_boundary\n"; 
$body.= "Content-Type: text/html; charset=\"UTF-8\"\n"; 
$body.= "Content-Transfer-Encoding: 7bit\n\n";  
$body.= str_replace(array("%%user%%","%%confcode%%","%%memb_id%%"),array($en['user'],$en['confcode'],$en['memb_id']),$html_content); 
$body.= "\n\n"; 
$body.= "--$mime_boundary--\n"; 
+0

удивительный, который отлично работал – acctman

3

Попробуйте

$body.= str_replace(
     array(
      "%%user%%", 
      "%%confcode%%", 
      "%%memb_id%%" 
     ), 
     array(
      $en['user'], 
      $en['confcode'], 
      $en['memb_id'] 
     ), 
     $html_content 
    ); 

вместо

$body.= str_replace("%%user%%",$en['user'],$html_content); 
    $body.= str_replace("%%confcode%%",$en['confcode'],$html_content); 
    $body.= str_replace("%%memb_id%%",$en['memb_id'],$html_content); 
+0

Я тоже пробовал этот пример, и он тоже работал. спасибо – acctman

0

Я думаю, вы хотите заменить все строки в одной и той же $html_content?

Там Фор вы должны вызвать replace на уже обработанных строк, чтобы получить их все рабочие:

$body.= "--$mime_boundary\n"; 
    $body.= "Content-Type: text/html; charset=\"UTF-8\"\n"; 
    $body.= "Content-Transfer-Encoding: 7bit\n\n";  
    $html_content= str_replace("%%user%%",$en['user'],$html_content); 
    $html_content= str_replace("%%confcode%%",$en['confcode'],$html_content); 
    $body.= str_replace("%%memb_id%%",$en['memb_id'],$html_content);  
    $body.= "\n\n"; 
    $body.= "--$mime_boundary--\n"; 

Обратите внимание, что это изменит вашу $html_content. Если это нежелательно, используйте другую переменную, чтобы назначить результат, или решение от Марка Бейкера.

Смежные вопросы