2016-03-19 23 views
0

Veritabanında saklanan bir HTML imzasında posta birleştirme efekti yapmak için birden çok değerin yerini bulmak için çalışıyorum.PHP preg_replace beklendiği gibi çalışmıyor

Dize bölümünün endişe duyulmamasını sağlayabilirim, ancak bazı nedenlerden dolayı çıktıda "[" & "]" bırakıyor. şu şekilde görünecektir HTML

Birleştirme etiketler: [ad], [Soyad]

şu şekilde görünecektir

Orijinal HTML:

Tür

[ad] [Soyad ilişkin ]

Mailmerge işlevini çalıştırdıktan sonra şu şekilde görünmelidir:

01 peşin

yılında

public function merge_user_signature() { 
    $user = $this->get_user_by_id(); 
    //spit_out($user); 

    $authorisedMergeTags = array (
     "[FirstName]" => $user->firstName, 
     "[LastName]" => $user->lastName 
    ); 

    $keys = array_keys($authorisedMergeTags); 
    $values = array_values($authorisedMergeTags); 
    $html = $this->get_user_signature(); 

    $mergedSignature = preg_replace($keys, array_values($authorisedMergeTags), $html); 

    return $mergedSignature; 
} 

Teşekkür:

Tür İşte

Ben şimdiye kadar ile geldim budur ve Im emin mesele küçük bir şey olduğunu

John Smith ilişkin

+0

Ben docs yukarıya bakmadık ('regex'es içinde özel karakterler ve gerektiği normalde [' 've] ancak' değiştirmenizi özgü konuşmak için bile eğer tam anlamıyla kullanılmasını istiyorum), ters eğik çizgi ile öneklenmelidir, '\. –

+0

İlk olarak, bir regex'e ihtiyacınız yok. –

cevap

1

(wha) dizeleriyle uğraşmak için bir regex kullanmanız gerekmez.) Duruma Tever:

return strtr($html, $authorisedMergeTags); 
+0

Mükemmel teşekkür ederim :) – Solvision

İlgili konular