2016-11-06 18 views
5

.replace'un JavaScript'te nasıl çalıştığı gibi bir işlevle dinamik olarak değiştirmenin bir yolu var mı?Dinamik olarak PHP'de bir işlevle değiştirme

"1 2 3" => "2 4 6" (x2) 

akım preg_replace fonksiyon argüman için bir işlev desteklemek için görünmüyor: Bir karşılaştırılabilir bir kullanım durumu Sayılarla aram bir dize var ve bir fonksiyonu sayesinde numaralarını geçmek istiyorum olacaktır. Başvuru için

, JavaScript aşağıdaki şekilde uygulanabilir:

var str = "1 2 3"; 
str.replace(/\d+/g, function(num){ 
    return +num * 2; 
}); 
+0

yılında

$newStr = preg_replace_callback("/\d+/", function($matches){ return $matches[0] * 2; }, $str); 

Kontrol sonucu 'preg_replace_callback' –

cevap

2

Sen regex maçları için geri arama sahiptir preg_replace_callback() kullanmalıdır. Geri arama fonksiyonundaki eşleşme rakamlarını çarpabilirsiniz. demo

+0

yanı endeksi almanın bir yolu var mı? –

+0

@Derek 朕 會 function İşlev dönüşü, "$ match" dizisindeki parçalarla eşleşir ve 'print_r ($ match)' – Mohammad

+0

@ Derek 朕 會 功夫 Evet ile kodunuzun iki sorunu vardır. Öncelikle fonksiyonun regex parametresini '//' arasında ayarlamalısınız. İkincisi, işlev iadesi için geri dönüşü bozduğundan, '$ i 'değerini' return'den önce artırmalısınız. Bkz. Https://3v4l.org/2bYAh – Mohammad

İlgili konular