Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash in HATASI VE ÇÖZÜMÜ
PHP uygulamalarında özellikle eski sürüm kodların yeni PHP sürümleriyle çalıştırılması sırasında çeşitli uyumluluk hatalarıyla karşılaşılabilir. Bu hatalardan biri de "Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash" uyarısıdır.
preg_match() Delimiter Hatası Nedir?
Bu hata genellikle PHP 5.3 ve üzeri sürümlerde, eski ereg / eregi fonksiyonlarının yerine preg_match() fonksiyonunun kullanılmaya başlanması sırasında ortaya çıkar.
preg_match() fonksiyonu düzenli ifadeler (Regular Expression) kullanarak metin içerisinde arama yapmak için kullanılır. Ancak bu fonksiyon belirli bir sözdizimi kuralına sahiptir ve arama desenlerinin özel karakterlerle belirtilmesini gerektirir.
preg_match() fonksiyonunda kullanılan düzenli ifade başlangıç ve bitiş karakterleri doğru tanımlanmadığında "Delimiter must not be alphanumeric or backslash" hatası oluşabilir.
preg_match() Hatasının Sebebi Nedir?
Eski PHP sürümlerinde kullanılan ereg() ve eregi() fonksiyonları yeni PHP sürümlerinde kaldırılmıştır. Bu nedenle eski kodların güncel PHP sürümlerinde çalışabilmesi için preg_match() fonksiyonuna dönüştürülmesi gerekir.
Ancak dönüşüm sırasında düzenli ifade yapısı değiştirilmeden yalnızca fonksiyon adı değiştirildiğinde bu hata ile karşılaşılabilir.
Örneğin aşağıdaki kullanım hatalıdır:
Çünkü preg_match() fonksiyonunda kullanılan ifade bir başlangıç ve bitiş karakteri ile tanımlanmalıdır.
preg_match() Delimiter Hatası Nasıl Çözülür?
Sorunu çözmek için öncelikle eski ereg / eregi fonksiyonlarıyla oluşturulan kodların yeni PHP standartlarına uygun hale getirilmesi gerekir.
- Kullanılan düzenli ifade yapısı kontrol edilmelidir.
- preg_match() içerisinde kullanılan arama deseni doğru formatta yazılmalıdır.
- Gereksiz veya hatalı karakter kullanımları kaldırılmalıdır.
- Eski PHP fonksiyonları yerine güncel PHP fonksiyonları tercih edilmelidir.
preg_match("/aranacak_kelime/", $degisken);
Dikkat Edilmesi Gerekenler
- PHP sürüm yükseltmelerinden önce kullanılan yazılımların uyumluluğu kontrol edilmelidir.
- Eski PHP fonksiyonları yeni sürümlerde hata veya güvenlik problemi oluşturabilir.
- Kod güncellemeleri yapılmadan önce mutlaka yedek alınmalıdır.
PHP sürüm yükseltmeleri sırasında sadece hata veren kod bölümlerini değiştirmek yerine, uygulamanın tamamının yeni PHP sürümü ile uyumluluğu kontrol edilmelidir.
Sonuç
"Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash" hatası genellikle eski PHP kodlarının yeni sürümlere uyarlanması sırasında ortaya çıkan bir uyumluluk problemidir.
Düzenli ifade yapısının doğru oluşturulması, eski fonksiyonların güncel natifleriyle değiştirilmesi ve PHP standartlarına uygun kodlama yapılması ile bu hata kolayca giderilebilir.
Bu makale, PHP preg_match() delimiter hatasının nedenlerini, çözüm yöntemlerini ve PHP sürüm geçişlerinde dikkat edilmesi gereken noktaları açıklamak amacıyla hazırlanmıştır. PHP, web yazılımları, sunucu teknolojileri ve teknik çözümler hakkında daha fazla bilgi için Yardım Merkezi'ndeki diğer teknik içeriklerimizi inceleyebilirsiniz.
Bu makale yardımcı olmadı mı? Destek ekibimizle iletişime geçin veya 0850 290 3344 numaralı hattı arayın.