dize php ile bir dosya değiştirme

3 Cevap php

Böyle kaydolma gibi bir görevin tamamlanması üzerine bir kullanıcı için bir html e-posta gönderir benim web uygulaması için bir e-posta modülü yazıyorum. Şimdi bu e-postanın biçimlendirme böyle% fullname% olarak değiştirilmesi gereken bu özel etiketleri ile, e-posta bir şablon html sayfası için karar verdik değişebilir gibi.

Benim fonksiyonu dizinin formatına (% fullname% => 'Ali Demir') bir dizi var; etiket tanımlayıcı olarak anahtar ve bunu değiştirmek için ihtiyaç duyduğu değeri ile.

Ben aşağıdakileri denedim:

        $fp = @fopen('email.html', 'r');

    if($fp)
    {
      while(!feof($fp)){

	  $line = fgets($fp);		  		  

	  foreach($data as $value){

	      echo $value;
	      $repstr = str_replace(key($data), $value, $line);		      

	  }


	  $content .= $repstr;

      }
      fclose($fp);
    }

Bu yapmak için en iyi yolu nedir? sadece 1 etiket anda yerini almak ... Ben doğru yolda veya mil üzerinde yoldaydım?

teşekkürler ...

3 Cevap

Ben sorun foreachta olduğunu düşünüyorum. Bu düzeltmek gerekir:

foreach($data as $key => $value){
    $repstr = str_replace($key, $value, $line);               
}

Alternatif olarak, ben bu daha etkili olması gerektiğini düşünüyorum:

$file = @file_get_contents("email.html");
if($file) {
    $file = str_replace(array_keys($data), array_values($data), $file);
    print $file;
}

Çalışması gerektiği gibi görünüyor, ama ben "file_get_contents ()" kullanın ve büyük bir patlama yapardım.

Biraz farklı bir yaklaşım dize enterpolasyon ie birlikte PHP'nin heredoc kullanmaktır:

$email = <<<EOD
<HTML><BODY>
Hi $fullname,
  You have just signed up.
</BODY></HTML>
EOD;

Bu, ayrı bir dosya önler ve daha sonra basit ikamesinin ötesinde kolay şeyler yapmak gerekir.