Gönderen Konu: Regexp ve PHP  (Okunma sayısı 2813 defa)

HS-Abdullah

  • Administrator
  • Newbie
  • *****
  • İleti: 45
    • Profili Görüntüle
    • E-Posta
Regexp ve PHP
« : Temmuz 24, 2010, 12:13:38 ÖS »
Merhaba Arkadaşlar,

Ön Bilgi
Bu konuda tamamen kendime ait bir makaleyi sizlere paylaşacağım. PHP ve regexp kullanımını bir arada sizlere kolay ve anlaşılır bir dille sunmaya çalışacağım. Arkadaşlar regexp aslında bir çok programlama dillerinde kullanılmakta perl gibi. Hatta şayet scriptlerinizde seo kullanıyorsanız veya bir linux sisteminde çalışıyorsanız mutalaka karşısınıza çıkmıştır. Regexp'nin zor tarafı değişik karakterler ve bu karakterlerin farklı yerde farklı anlamlarının olması aslında bunun haricinde iyi anlaşıldığı zaman uygulamasının kolay olduğunu düşünüyorum arkadaşlar. Bu kadar ön bilgiden sonra hemen dersimize başlayalım.


Yapılabilecekler ve Pattern Kavramı
Arkadaşlar regexp de mantık şudur. Metinde tekrar eden birşey vardır. Veya bazı şeyleri yakalamak istiyoruzdur. Fakat işin içine mantıksal işlemler girmektedir.

Örneğin
Kod: [Seç]
[url=http://www.link.com]
Şeklinde bir bbc kodumuz vardır. Fakat bizim burda yapmak istediğiniz aşağıdaki şekle çevirmektir.
Kod: [Seç]
<a href="http://link.com">
Şayet str_replace kullanırsak son ] çevirirken tıkanacağız. İşte bu sırada imdadımıza gerexp gelmekte. Veya aynı mantıkla değiştirmek yerine yakalamak istediğimizde ve bunu ekrana yazdırmak istediğimizde yine regexp yi kullanabiliriz. Veya bir başka örnek verirsek 5.432,014 şeklinde metnimizde geçen sayılar mevcut ve gördüğünüz gibi bokta ile virgül yanlış yazılmış. Bunların sırasını değiştirmek istiyorsunız.Bunları elle düzeltmek gerçekten büyük vakit almakta fakar aynı işlemi regexp ile saniyeler içinde yapabilirsiniz.Size son örneği verme sebebim pattern (desen) kavramını tarif edebilmek arkadaşlar. Yani metinde geçen ve tekrar eden en küçük yapı taşını buluyoruz.Ve bunu tüm metne veya istediğimiz herhangi bir kısma uygulayabiliyoruz.

Genel Kullanım Şekli

Regexp kullanımını 3 kısımda ifade edebiliriz: Sınırlayıcı-Desen Kısm-Sınırlayıcı-Ayar Kısmı
Sınırlayıcı olarak herhangi bir karakter alabiliriz. İnternette var olan hazır regexp kodlamalarında genellikle / kullanılmakta fakat @ gibi farklı sınırlayıcı karakter de kullanabiliriz. Bu aslında birazda yazacağımız desenin işlevine bağlı arkadaşlar. Örneğin bir mail için yazıyorsak desenimizi, @ kullanmak pek de akıllıca olmaz sanırım. Fakat kullansakda var olan özel anlamı gidermek için \ (ters slash) kullanabiliriz.

Devam edecek...