Başka bir işleve argüman olarak kullanılan PHP preg_replace () geribaşvurularla

1 Cevap php

Ben bir regex kullanarak bir etiket bilgileri ayıklamak için çalışıyorum, daha sonra etiketinin çeşitli yerlerinde dayalı bir sonuca dönmek.

preg_replace('/<(example )?(example2)+ \/>/', analyze(array($0, $1, $2)), $src);

Yani parça kapma ve analyze() işlevine geçiyorum. Bir kez orada, ben parçaları kendilerini dayalı iş yapmak istiyorum:

function analyze($matches) {
    if ($matches[0] == '<example example2 />')
          return 'something_awesome';
    else if ($matches[1] == 'example')
          return 'ftw';
}

Ben analiz işlevi bir kez olsun vs Ama, $matches[0] sadece '$0' dize eşittir. Bunun yerine, $matches[0] preg_replace () çağrısından geribaşvuru başvurmak gerekir. Bunu nasıl yapabilirim?

Teşekkürler.

EDIT: Ben sadece preg_replace_callback () işlevi gördü. Belki de bu benim aradığım budur ...

1 Cevap

Sen preg_replace böyle kullanamazsınız. Muhtemelen istiyorum preg_replace_callback