⊗ppPmRgRCb 260 of 447 menu

PHP'de Düzenli İfadeler ile Geri Çağırım Kullanarak Değiştirme

Diyelim ki aşağıdaki dizgimiz var:

<?php $str = '2+3= 3+5= 7+8='; ?>

Diyelim ki sayı+sayı= şeklindeki tüm yapıları bulmamız ve eşittir işaretinden sonra toplama sonucunun görünmesini sağlamamız gerekiyor.

Böyle bir problemi çözmek için preg_replace_callback fonksiyonunu kullanmak uygundur. Bu fonksiyon, preg_replace fonksiyonuna benzer şekilde çalışır - düzenli ifadeye göre bulur ve değiştirir, ancak bulunan parçalarla ek işlemler yapmamıza olanak tanır.

Fonksiyon ilk parametre olarak düzenli ifadeyi, ikinci parametre olarak neyle değiştireceğimizi, üçüncü parametre olarak da değişikliğin yapılacağı dizgiyi alır.

Ancak, ikinci parametreye, her bulunan eşleşme için çağrılacak bir geri çağırım fonksiyonu iletilmelidir.

Geri çağırımın ilk parametresi olarak, bulunanın içine gireceği değişkeni belirtmeliyiz. Bu değişken, bulunanın yakalama gruplarını içeren bir dizi olacaktır.

Pratikte deneyelim. Alt dizgilerimizi yakalayan, ilk sayıyı birinci yakalama grubuna, ikinci sayıyı ise ikinci yakalama grubuna koyan bir kod yazalım:

<?php $str = '2+3= 3+5= 7+8='; preg_replace_callback('#(\d+)\+(\d+)=#', function($match) { var_dump($match); }, $str); ?>

Sonuç olarak var_dump'umuz üç kez çalışacak ve sırasıyla aşağıdakileri gösterecektir:

['2+3=', '2', '3'] ['3+5=', '3', '5'] ['7+8=', '7', '7']

Devam edelim. Her bir eşleşme, geri çağırımın return ile döndürdüğü şeyle değiştirilecektir. Örnek olarak, aranan her bir alt dizgiyi '!' işaretiyle değiştirelim:

<?php $str = '2+3= 3+5= 7+8='; $res = preg_replace_callback('#(\d+)\+(\d+)=#', function($match) { return '!'; }, $str); echo $res; // '! ! !' yazdıracak ?>

Şimdi de her bir alt dizgiyi, içindeki sayı çiftinin toplamıyla değiştirelim:

<?php $str = '2+3= 3+5= 7+8='; $res = preg_replace_callback('#(\d+)\+(\d+)=#', function($match) { return $match[1] + $match[2]; }, $str); echo $res; // '5 8 13' yazdıracak ?>

Görünüşe göre problemimiz neredeyse çözüldü. Geriye kalan, sayıların toplamının önünde aranan alt dizginin kalmasını sağlamak. Bunun için sıfırıncı yakalama grubunun içeriğini toplamın önüne yerleştireceğiz:

<?php $str = '2+3= 3+5= 7+8='; $res = preg_replace_callback('#(\d+)\+(\d+)=#', function($match) { return $match[0] . ($match[1] + $match[2]); }, $str); echo $res; // '2+3=5 3+5=8 7+8=13' yazdıracak ?>

Bir dizgi verildi:

<?php $str = 'The numbers are 3, 7 and 12'; ?>

Dizgideki tüm sayıları kareleriyle değiştirin.

Beklenen sonuç:

'The numbers are 9, 49 and 144'

Bir dizgi verildi:

<?php $str = '2023-01-15 2022-12-31 2024-05-20'; ?>

Tüm tarihleri gün.ay.yıl formatına dönüştürün.

Bir dizgi verildi:

<?php $str = 'Costs: $15, $20, $100'; ?>

Tüm fiyatları %10 artırın.

Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet