(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
fnmatch — Dosya ismi belirtilen kalıpla eşleşiyor mu diye bakar
fnmatch() işlevi, belirtilen
dosyaismi'nin belirtilen dosya kalıbı ile eşleşip
eşleşmediğine bakar.
kalıp
Eşleştirilecek kalıp. Normalde
kalıp '?' ve
'*' gibi kabuk dosya kalıplarıdır.
| Kalıp | Açıklama |
|---|---|
?
|
Herhangi bir tek karakterle eşleşir. Örneğin
"file?.txt" kalıbı "file1.txt"
ve "fileA.txt" ile eşleşir ama
"file10.txt" ile eşleşmez.
|
*
|
Sıfır ya da daha fazla karakterle eşleşir. Örneğin,
"foo*.xml" kalıbı "foo.xml" ve
"foobar.xml" ile eşleşir.
|
[ ]
|
Bir veya daha fazla karakter aralığı belirtmekte kullanılır.
Örneğin, "index.php[45]" kalıbı
"index.php4" ve
"index.php5" ile eşleşir, ama
"index.phpt" ile eşleşmez.
Çok kullanılan aralıklar: [0-9],
[a-z] ve [A-Z]. Ayrıca,
[0-9a-zABC] biçeminde birden fazla aralık da
belirtilebilir
|
!
|
Köşeli ayraçlar içinde karakterleri olumsuzlamakta kullanılır.
Örneğin, "[!A-Z]*.html" kalıbı
"demo.html" ile eşleşir ama
"Demo.html" ile eşleşmez.
|
\
|
Özel karakterleri öncelemekte kullanılır.
Örneğin, "Name\?" kalıbı
"Name?" ile eşleşir ama
"Names" ile eşleşmez.
|
dosyaismiSınanacak dizge. İşlev özellikle dosya isimleri için yararlı olsa da sıradan dizgeler için de kullanılabilir.
Ortalama bir kullanıcı, kabuk dosya ismi kalıplarını veya bunların en
basit biçimleri olan '?' ve '*'
karakterlerini kullanabilir. Bu bakımdan, programcı olmayan
kullanıcılar için preg_match() yerine
fnmatch() kullanımı daha uygun olabilir.
seçeneklerBelirtilebilecek seçenekler:
Seçenek |
Açıklama |
|---|---|
FNM_NOESCAPE |
\ karakteri kalıplarda özel olarak ele alınmaz. Normalde, \
kendinden sonraki karakteri önceler; bu seçenek etkinse bu
özellik kapatılır, böylece sadece kendisiyle eşleşebilir.
Önceleme etkin olduğunda, \? kalıbı sadece ? karakteri ile
eşleşir, çünkü kalıp içindeki soru işareti sıradan bir karakter
gibi işlem görür.
Eğer FNM_NOESCAPE seçeneği etkinse,
\ sıradan bir karakterdir.
|
FNM_PATHNAME |
Bu POSIX.2 ile gelen bir FNM_FILE_NAME takma
ismidir.
|
FNM_PERIOD |
|
FNM_CASEFOLD |
dizge ile kalıp
karşılaştırılırken harf büyüklüğüne bakılmaz.
|
Örnek 1 - Bir renk isminin bir kabuk dosya kalıbıyla eşleştirilmesi
<?php
if (fnmatch("*gr[ae]y", $color)) {
echo "grinin bir tonu ...";
}
?>Bu işlev şimdilik POSIX uyumlu olmayan sistemlerde kullanılamamaktadır, Windows hariç.