Doğru Cevap
-
Bunun için Regular Expression öğrenmen gerekli,
preg_* fonksiyonları regex kabul ederler, senin yazmış olduğun örnekte
~[^pLd]+~u
burada ~ "delimiter" olarak tanınmaktadır. bunun yerine herhangi bir karakter konulabilir fakat ne koyduysan o karakter escape edilmesi gereken karakter olur.
[ ] (köşeli parantez) "veya" ifadesi katar. [abc] "a veya b veya c" demektir, fakat karakter bazlıdır. kelime bazlı olması için (kelime1|kelime2|kelime3) şeklinde olmalıdır. aralık da verilebilir "a-z" a ile z arasındaki, "1-9" 1 ile 9 arasındaki demektir.
[ ] içerisindeki ^ işareti "değilse / olmayan" ifadesi katarken (mesela [^>] demek, "> işareti yokken" demektir) diğer koşullarda "başlıyorsa" ifadesi katar.
$ ifadesi "bitiyorsa" demektir.
* ifadesi "en az 0 en çok sonsuz", + ifadesi ise "en az 1 en çok sonsuz" ifadesi katar.
"." (nokta) "herhangi bir karakter" demektir.
Mesela ".*" "herşey" demektir. Çünkü, "herhangi bir karakterden en az 0 veya sonsuz tane" manası verir.
"a+" ise "a karakterinden en az 1 veya sonsuz tane" ifadesi katacaktır.
[a-z]+ ifadesi "a ile z aralığındaki herhangi bir karakterden en az 1 veya sonsuz tane" ifadesi katar.
PHP'de regex kullanımlarında "()" (parantez) işareti alınması gereken değişkeni temsil eder.
O yüzden, "[a-z0-9]+" gibi ifadeleri çok görürsünüz.
PHP'de delimiterlerdan sonra bu regex ile ilgili ayarlar belirlenir
i = incasesensitive
u = utf8 / unicode
s = no-space
gibi..
Eğer bu karakterlerin çalışmasını istemiyorsanız ile escape edebilirsiniz.
Mesela: [[]] demek "[ veya ] karakteri olan" demektir
Örnek bir php kodu
kaynağı göster
yazdırnedir?
$regex = '~<a[^>]*>(.*)<\/a>~ui';
regex kodu, size HTML'deki bir tagını verir.
Eksik olabilir, tüm bilgiye php.net'ten ulaşabilirsiniz.
Cevaplar
-
Bunun için Regular Expression öğrenmen gerekli,
preg_* fonksiyonları regex kabul ederler, senin yazmış olduğun örnekte
~[^pLd]+~u
burada ~ "delimiter" olarak tanınmaktadır. bunun yerine herhangi bir karakter konulabilir fakat ne koyduysan o karakter escape edilmesi gereken karakter olur.
[ ] (köşeli parantez) "veya" ifadesi katar. [abc] "a veya b veya c" demektir, fakat karakter bazlıdır. kelime bazlı olması için (kelime1|kelime2|kelime3) şeklinde olmalıdır. aralık da verilebilir "a-z" a ile z arasındaki, "1-9" 1 ile 9 arasındaki demektir.
[ ] içerisindeki ^ işareti "değilse / olmayan" ifadesi katarken (mesela [^>] demek, "> işareti yokken" demektir) diğer koşullarda "başlıyorsa" ifadesi katar.
$ ifadesi "bitiyorsa" demektir.
* ifadesi "en az 0 en çok sonsuz", + ifadesi ise "en az 1 en çok sonsuz" ifadesi katar.
"." (nokta) "herhangi bir karakter" demektir.
Mesela ".*" "herşey" demektir. Çünkü, "herhangi bir karakterden en az 0 veya sonsuz tane" manası verir.
"a+" ise "a karakterinden en az 1 veya sonsuz tane" ifadesi katacaktır.
[a-z]+ ifadesi "a ile z aralığındaki herhangi bir karakterden en az 1 veya sonsuz tane" ifadesi katar.
PHP'de regex kullanımlarında "()" (parantez) işareti alınması gereken değişkeni temsil eder.
O yüzden, "[a-z0-9]+" gibi ifadeleri çok görürsünüz.
PHP'de delimiterlerdan sonra bu regex ile ilgili ayarlar belirlenir
i = incasesensitive
u = utf8 / unicode
s = no-space
gibi..
Eğer bu karakterlerin çalışmasını istemiyorsanız ile escape edebilirsiniz.
Mesela: [[]] demek "[ veya ] karakteri olan" demektir
Örnek bir php kodu
kaynağı göster
yazdırnedir?
$regex = '~<a[^>]*>(.*)<\/a>~ui';
regex kodu, size HTML'deki bir tagını verir.
Eksik olabilir, tüm bilgiye php.net'ten ulaşabilirsiniz.