PHP regex özü / named (alt) grupları aracılığıyla xml benzeri etiketler değerleri değiştirin

1 Cevap php

PHP basit bir metin-çevirmen oluşturmak için çalışıyoruz.

Bu gibi bir şey eşleşen bir görüntüyü:

Bla bla {translator id="TEST" language="de"/}

Dil isteğe bağlı olabilir

Blabla <translator id="TEST"/>

İşte kod:

$result = preg_replace_callback(
  '#{translator(\s+(?\'attribute\'\w+)="(?\'value\'\w+)")+/}#i',
  array($this, 'translateTextCallback'), 
  $aText
);

Bu "özelliklerini" özler, ancak sonuncuyu getirir. Benim ilk düşünce PHP her maçta (adlandırılmış) Dizi elemanlarını yazar zaman, grup adlandırma ile ilgisi oldu. Ama aynı zamanda bu adlandırma grubunu dışarıda bırakarak sadece son maçı döndürür.

Örnek olarak geri arama iade olarak burada bir dizidir

Array
(
    [0] => {translator id="TEST" language="de"/}
    [1] =>  language="de"
    [attribute] => language
    [2] => language
    [value] => de
    [3] => de
)

1 Cevap

Bir grubu yineleme yaptığınızda, sadece son maç olsun. Bu etrafında bir yolu yoktur. Sen nitelik / değerlerinin bütün seti maç ve ardından kod onları ayrıştırmak gerekiyor.