arama ve değiştirme php

3 Cevap

Ben php kullanarak bir belge (rtf) içine bir veritabanı alan birleştirme oluşturmak için çalışıyorum

yani ben başlayan bir belge varsa

Sevgili Efendim,

Müşteri Adı: [customer_name], sipariş tarihi: [ORDER_DATE]

Uygun veritabanı kaydını aldıktan sonra ben basit bir arama kullanmak ve doğru yere veritabanı alanı eklemek için değiştirebilirsiniz.

Şimdiye kadar iyi.

Ben ancak onun yerini önce veri üzerinde biraz daha fazla kontrole sahip olmak istiyorum. Örneğin ben Başlığı Durumunda bunu isteyebilirsiniz, ya satırbaşları ile bir liste halinde sınırlandırılmış bir dize dönüştürmek.

Bu nedenle değiştirilecek alana ekstra biçimlendirme komutları eklemek mümkün olmak istiyorum. örneğin

Sevgili Efendim,

Müşteri Adı: [customer_name, TC], sipariş tarihi: [ORDER_DATE, Y / M / D]

Alan başına birden fazla biçimlendirme komut olabilir.

Ben şimdi bu dizeleri arayabilirsiniz bir yolu var mı? Dizeleri biçimi taş koymak, bu yüzden biçimini değiştirmek için varsa o zaman ben yapamam edilir.

Herhangi bir öneriniz takdir.

3 Cevap

Bir RegEx deneyin ve preg_replace_callback:

function replace_param($matches)
{
  $parts = explode(',',$matches[0]);
  //$parts now contains an array like: customer_name,TC,SE,YMD
  // do some substitutions and:
  return $text;
}
preg_replace_callback('/\[([^\]]+)\]/','replace_param',$rtf);

Eğer e-posta şablonu {$customer_name|ucwords} ya da aslında koymak PHP kodu yapabileceği gibi, hayatınızı kolaylaştırmak olabilir, Smarty gibi bir çiftleşmiş sistemi kullanabilirsiniz.

Sen dizi değerlere onları ayırmak için üzerinde explode kullanabilirsiniz.

Örneğin:

$customer_name = 'customer_name, TC';
$get_fields = explode(',', $customer_name);

foreach($get_fields as $value)
{
  $new_val = trim($value);
  // Now do whatever you want to these in here.
}

Üzgünüm seni anlayamıyorum eğer.