- Konu sahibi
- #1
PHP trim nedir?
PHP'deki
trim() işlevi, bir metnin başındaki ve sonundaki gereksiz karakterleri kaldırır ve temizlenmiş yeni metni döndürür. Varsayılan olarak boşluk, sekme, satır sonu ve benzeri kenar karakterlerini siler; metnin ortasındaki boşluklara dokunmaz.Temel kullanım
İşlevin en basit biçimi şöyledir:
Kod:
$temizMetin = trim($metin);
trim() değişkenin değerini yerinde değiştirmez. Sonucu aynı değişkene atamak veya başka bir değişkende kullanmak gerekir. Değişkenin başında ya da sonunda anlamlı olarak korunması gereken boşluklar varsa trim() uygulamadan önce bu davranışı özellikle değerlendirin.Örnek ve beklenen sonuç
Aşağıdaki dosyayı
trim-ornek.php adıyla kaydedip PHP CLI ile çalıştırabilirsiniz:
Kod:
<?php
$girdi = " PHP ile web geliştirme \n";
$sonuc = trim($girdi);
var_export($sonuc);
echo PHP_EOL;
Komut satırında şu komutu çalıştırın:
Kod:
php trim-ornek.php
Beklenen çıktı şöyledir:
Kod:
'PHP ile web geliştirme'
Çıktının başında veya sonunda boşluk görünmüyorsa işlem başarılıdır. Başındaki ve sonundaki karakterler hâlâ görünüyorsa değer, varsayılan
trim() karakter kümesinde bulunmayan özel bir karakter içeriyor olabilir. Değerin ortasındaki birden fazla boşluğun korunması normaldir; trim() metin içi boşlukları düzenlemez.Varsayılan davranış ve özel karakter listesi
İkinci parametre verilmezse PHP, metnin kenarlarındaki standart boşluk karakterlerini temizler. Yalnızca belirli karakterleri silmek istediğinizde ikinci parametreyi kullanabilirsiniz:
Kod:
$kod = "...ABC123...";
$temizKod = trim($kod, ".");
echo $temizKod; // ABC123
Buradaki
"." ifadesi yalnızca nokta karakterlerinin baştan ve sondan kaldırılacağını belirtir. Bu parametre bir düzenli ifade değildir; temizlenecek karakterlerden oluşan bir karakter listesidir. Bu nedenle trim($metin, "abc") ifadesi, "abc" kelimesini arayıp silmez; a, b ve c karakterlerini kenarlardan kaldırır.Aşağıdaki karşılaştırma hangi işlevin kullanılacağını seçmeyi kolaylaştırır:
| İşlev | Temizlenen bölüm | Uygun kullanım |
|---|---|---|
trim() | Baş ve son | Kullanıcı girdisinin kenar boşluklarını temizlemek |
ltrim() | Yalnız başlangıç | Metnin başındaki dolgu karakterini kaldırmak |
rtrim() | Yalnız son | Satır sonunu veya sondaki dolgu karakterini kaldırmak |
Form verilerinde pratik kullanım
Bir form alanından gelen değeri karşılaştırmadan, doğrulamadan veya veritabanına kaydetmeden önce kenar boşluklarını temizlemek yaygın bir kullanımdır:
Kod:
$ham = $_POST['kullanici_adi'] ?? '';
if (!is_string($ham)) {
http_response_code(400);
exit('Geçersiz alan biçimi.');
}
$kullaniciAdi = trim($ham);
if ($kullaniciAdi === '') {
echo 'Kullanıcı adı boş bırakılamaz.';
} else {
echo 'Kullanıcı adı alındı: ' . htmlspecialchars(
$kullaniciAdi, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'
);
}
Burada
?? '' alan eksikse boş bir başlangıç değeri sağlar; alanın dizi olarak gönderilmesi ayrıca reddedilir. HTML metnine eklenen değer de ayrı olarak kodlanır. Ancak trim() doğrulamanın tamamı değildir. Uzunluk, izin verilen karakterler, e-posta biçimi veya iş kuralı ayrıca kontrol edilmelidir. trim() ayrıca HTML kaçışlama, SQL güvenliği ya da Unicode normalleştirme yapmaz.Sık yapılan hatalar ve sınırlar
- Sonucu atamamak:
trim($metin);çağrısı tek başına değişkeni değiştirmez.$metin = trim($metin);şeklinde atama yapın. - Ortadaki boşlukları temizlemesini beklemek:
"Ali Veli"içindeki boşluklar korunur. İç boşlukları düzenlemek için ayrıca uygun bir metin işlemi gerekir. - Anlamlı kenar boşluğunu kaybetmek: Metin biçimlendirme veya sabit genişlikli veri üreten bir işlemde
trim()kullanmak içeriğin anlamını değiştirebilir. - Özel Unicode boşluklarını standart boşluk sanmak: UTF-8 metinlerdeki her görünmez karakter varsayılan karakter listesiyle aynı şekilde temizlenmeyebilir. Böyle bir veriyle çalışıyorsanız önce hangi karakterin bulunduğunu tespit edip Unicode uyumlu bir çözüm seçin.
trim(), bir metnin yalnızca kenarlarını temizlemek için kullanılır. Form veya karşılaştırma verilerinde önce sonucu bir değişkene atayın, sonra boşluk temizlenmiş değeri doğrulama ve işleme adımlarına aktarın.Sık sorulan sorular
Parola alanına otomatik trim uygulanmalı mı?
Kullanıcının girdiği baştaki veya sondaki boşluk parolanın anlamlı bir parçası olabilir. Bir alan için normalleştirme kuralını açıkça belirleyin; özellikle parola doğrulamasından önce sessizce karakter silmeyin. Kullanıcı adı için uygun olan dönüşüm her veri türüne uygulanmaz.
Temizlenen değer sıfırsa boş kabul edilir mi?
trim(" 0 ") sonucu "0" metnidir ve boş metin değildir. Yalnız boş metni sınamak için $sonuc === '' karşılaştırmasını kullanın; genel doğruluk/yanlışlık kontrolü sıfırı da yanlış sayabilir.