PHP String İşlemleri

PHP string fonksiyonları, uzunluk bulma ve büyük-küçük harf dönüşümlerini öğrenin.

PHP'de string (dizi) nedir ve hangi işlemlerin yapılabileceğine dair detaylı bir açıklama: --- ## PHP'de String (Karakter Dizisi) Nedir? PHP'de **string**, karakterlerden oluşan bir dizidir. Metinsel verileri (kelimeler, cümleler, isimler, adresler, HTML kodları vb.) depolamak ve üzerinde işlem yapmak için kullanılır. ### Temel Özellikler: 1. **Karakter Sırası:** Stringler, belirli bir sırada dizilmiş karakterlerden (harfler, sayılar, semboller, boşluklar) oluşur. 2. **Tırnak İşaretleri:** PHP'de bir string oluşturmak için değerin tek tırnak (`'`) veya çift tırnak (`"`) arasına alınması gerekir. 3. **Değişken Türü:** Stringler, PHP'nin temel veri tiplerinden biridir. ### Tek Tırnak (`'`) vs. Çift Tırnak (`"`): Bu iki yöntem arasındaki temel fark, PHP'nin içeriklerini nasıl yorumladığıdır: * **Tek Tırnak (`'`):** İçindeki içeriği "olduğu gibi" yorumlar. Değişkenleri ve çoğu özel kaçış dizisini (`\n` gibi) ayrıştırmaz. Sadece `\'` (tek tırnak karakteri için) ve `\\` (ters eğik çizgi karakteri için) kaçış dizilerini tanır. Genellikle daha hızlıdır çünkü daha az işleme tabi tutulur. ```php $isim = 'Ahmet'; echo 'Merhaba, $isim!'; // Çıktı: Merhaba, $isim! echo 'Bu bir yeni satır karakteri değil: \n'; // Çıktı: Bu bir yeni satır karakteri değil: \n echo 'O\'nun kitabı'; // Çıktı: O'nun kitabı ``` * **Çift Tırnak (`"`):** İçindeki içeriği ayrıştırır (parse eder). Değişkenleri otomatik olarak değerleriyle değiştirir ve özel kaçış dizilerini (örneğin, `\n` yeni satır, `\t` tab) yorumlar. ```php $isim = 'Ayşe'; echo "Merhaba, $isim!\n"; // Çıktı: Merhaba, Ayşe! (ve yeni satıra geçer) echo "Bu bir tab karakteri:\tMerhaba\n"; // Çıktı: Bu bir tab karakteri: Merhaba (ve yeni satıra geçer) ``` * **Heredoc ve Nowdoc (İleri Seviye):** Çok satırlı stringler veya karışık tırnak işaretleri içeren stringler için kullanılan özel söz dizimleridir. Heredoc çift tırnak gibi, Nowdoc ise tek tırnak gibi davranır. ```php // Heredoc (çift tırnak gibi davranır) $metin = <<<EOT Bu çok satırlı bir metin. Değişkenler de çalışır: $isim EOT; echo $metin; // Nowdoc (tek tırnak gibi davranır) $rawMetin = <<<'EOT' Bu da çok satırlı bir metin, ancak değişkenler ($isim) çalışmaz. EOT; echo $rawMetin; ``` --- ## Stringler Üzerinde Yapılabilecek İşlemler ve Fonksiyonlar: PHP, stringler üzerinde sayısız işlem yapmanızı sağlayan zengin bir fonksiyon setine sahiptir. İşte en yaygın olanları: ### 1. String Birleştirme (Concatenation) İki veya daha fazla stringi birleştirmek için `. (nokta)` operatörü kullanılır. ```php $ad = "Ali"; $soyad = "Yılmaz"; $tamAd = $ad . " " . $soyad; // "Ali Yılmaz" echo $tamAd; $mesaj = "Hoş geldiniz, " . $ad . "!"; // "Hoş geldiniz, Ali!" echo $mesaj; ``` ### 2. String Uzunluğunu Bulma * `strlen(string $string): int`: Stringin bayt cinsinden uzunluğunu (karakter sayısını) döndürür. Türkçe karakterler gibi çok baytlı karakterlerde yanıltıcı olabilir. * `mb_strlen(string $string, ?string $encoding = null): int`: Çok baytlı karakterleri doğru sayan, Unicode uyumlu bir fonksiyondur. Genellikle `UTF-8` ile kullanılmalıdır. ```php $str1 = "Merhaba"; echo strlen($str1); // Çıktı: 7 $str2 = "Şifre"; // "Ş" karakteri UTF-8'de 2 bayt yer kaplar echo strlen($str2); // Çıktı: 6 (yanlış, aslında 5 karakter var) echo mb_strlen($str2, 'UTF-8'); // Çıktı: 5 (doğru) ``` ### 3. Alt String İşlemleri (Substring Operations) * `substr(string $string, int $start, ?int $length = null): string|false`: Bir stringin belirli bir bölümünü (alt string) alır. ```php $text = "Merhaba Dünya"; echo substr($text, 0, 7); // Çıktı: Merhaba echo substr($text, 8); // Çıktı: Dünya echo substr($text, -5); // Çıktı: Dünya (sondan 5 karakter) ``` * `str_replace(string|array $search, string|array $replace, string|array $subject, ?int &$count = null): string|array`: Bir stringdeki belirli bir veya birden fazla alt stringi başka bir stringle değiştirir. ```php $cumle = "Merhaba Dünya, merhaba gezegen."; echo str_replace("merhaba", "selam", $cumle); // Çıktı: Selam Dünya, selam gezegen. (Küçük/büyük harf duyarlı) echo str_ireplace("merhaba", "selam", $cumle); // Çıktı: Selam Dünya, selam gezegen. (Küçük/büyük harf duyarsız) ``` ### 4. String Arama ve Bulma * `strpos(string $haystack, string $needle, int $offset = 0): int|false`: Bir string içinde başka bir stringin ilk geçtiği pozisyonu döndürür. Bulamazsa `false` döndürür. (Case-sensitive) * `stripos(string $haystack, string $needle, int $offset = 0): int|false`: `strpos` ile aynı, ancak büyük/küçük harf duyarlı değildir. * `str_contains(string $haystack, string $needle): bool` (PHP 8+): Bir stringin başka bir stringi içerip içermediğini kontrol eder. ```php $mail = "test@example.com"; $pos = strpos($mail, "@"); if ($pos !== false) { echo " '@' karakteri pozisyonu: " . $pos; // Çıktı: '@' karakteri pozisyonu: 4 } $aciklama = "Bu bir açıklama metnidir."; if (str_contains($aciklama, "metin")) { echo "\n'metin' kelimesi bulundu."; } ``` ### 5. Karakter Durumu Dönüşümleri (Case Conversion) * `strtolower(string $string): string`: Stringi tamamen küçük harfe dönüştürür. * `strtoupper(string $string): string`: Stringi tamamen büyük harfe dönüştürür. * `ucfirst(string $string): string`: Stringin ilk karakterini büyük harfe dönüştürür. * `ucwords(string $string): string`: Stringdeki her kelimenin ilk karakterini büyük harfe dönüştürür. * **Önemli:** Türkçe veya diğer çok baytlı karakter setlerinde `mb_strtolower()`, `mb_strtoupper()`, `mb_ucfirst()` (PHP 8.2+) gibi `mb_` ön ekli fonksiyonları kullanmak önemlidir. ```php $baslik = "php string işlemleri"; echo strtoupper($baslik); // Çıktı: PHP STRING İŞLEMLERİ echo ucfirst("merhaba dünya"); // Çıktı: Merhaba dünya echo ucwords("bu bir deneme metni"); // Çıktı: Bu Bir Deneme Metni $tr_metin = "şifre giriniz"; echo strtoupper($tr_metin); // Çıktı: ŞİFRE GİRİNİZ (Bazı durumlarda "I" olabilir, mb_ kullanın) echo mb_strtoupper($tr_metin, 'UTF-8'); // Çıktı: ŞİFRE GİRİNİZ ``` ### 6. Boşlukları Kırpma (Trimming) * `trim(string $string, ?string $characters = null): string`: Stringin başındaki ve sonundaki boşlukları (veya belirtilen karakterleri) kaldırır. * `ltrim(string $string, ?string $characters = null): string`: Stringin sol tarafındaki boşlukları kaldırır. * `rtrim(string $string, ?string $characters = null): string`: Stringin sağ tarafındaki boşlukları kaldırır. ```php $input = " Merhaba Dünya "; echo "|" . trim($input) . "|"; // Çıktı: |Merhaba Dünya| $numara = "000123450"; echo trim($numara, "0"); // Çıktı: 12345 ``` ### 7. Stringleri Ayırma ve Birleştirme * `explode(string $separator, string $string, int $limit = PHP_INT_MAX): array`: Bir stringi belirli bir ayırıcıya göre bir diziye böler. ```php $etiketler = "php,html,css,javascript"; $dizi = explode(",", $etiketler); print_r($dizi); // Çıktı: Array ( [0] => php [1] => html [2] => css [3] => javascript ) ``` * `implode(string $separator, array $array): string`: Bir dizinin elemanlarını belirli bir ayırıcı ile birleştirerek tek bir string oluşturur. ```php $bolumler = ["Anasayfa", "Hakkımızda", "İletişim"]; $nav = implode(" | ", $bolumler); echo $nav; // Çıktı: Anasayfa | Hakkımızda | İletişim ``` ### 8. HTML ve URL İşlemleri * `htmlspecialchars(string $string, int $flags = ENT_COMPAT|ENT_HTML401, string $encoding = "UTF-8", bool $double_encode = true): string`: HTML özel karakterlerini (örneğin `<` `>` `&` `"` `'`) HTML varlıklarına dönüştürerek XSS saldırılarını önlemeye yardımcı olur. * `strip_tags(string $string, ?string $allowed_tags = null): string`: Bir stringden HTML ve PHP etiketlerini kaldırır. * `urlencode(string $string): string`: Bir stringi URL dostu hale getirir (örneğin boşlukları `%20` yapar). * `urldecode(string $string): string`: URL kodlanmış bir stringi çözümler. ```php $unsafe_html = "<script>alert('XSS!');</script><b>Merhaba</b>"; echo htmlspecialchars($unsafe_html); // Çıktı: &lt;script&gt;alert(&#039;XSS!&#039;);&lt;/script&gt;&lt;b&gt;Merhaba&lt;/b&gt; echo strip_tags($unsafe_html, '<b>'); // Çıktı: alert('XSS!');<b>Merhaba</b> $query = "ürün adı = Laptop"; echo urlencode($query); // Çıktı: %C3%BCr%C3%BCn+ad%C4%B1+%3D+Laptop ``` ### 9. String Biçimlendirme * `sprintf(string $format, mixed ...$values): string`: Biçimlendirilmiş bir string oluşturur. ```php $urun = "Bilgisayar"; $fiyat = 1250.75; $output = sprintf("Ürün: %s, Fiyat: %.2f TL", $urun, $fiyat); echo $output; // Çıktı: Ürün: Bilgisayar, Fiyat: 1250.75 TL ``` --- ### Önemli Notlar: * **Karakter Kodlaması (Encoding):** PHP stringleriyle çalışırken özellikle Türkçe gibi Unicode karakterler içeren dillerde `UTF-8` karakter kodlamasını kullanmak ve `mb_` (multi-byte) fonksiyonlarını tercih etmek çok önemlidir. Aksi takdirde `strlen()`, `substr()` gibi fonksiyonlar beklenmedik sonuçlar verebilir (örneğin 'ş' karakterini 2 bayt sayabilir). * **Performans:** Basit stringler için tek tırnak (`'`) kullanmak, değişken veya kaçış dizisi ayrıştırma ihtiyacı olmadığında çift tırnağa (`"`) göre daha performanslı olabilir. * **Güvenlik:** Kullanıcıdan gelen string verilerini doğrudan HTML çıktısına basmadan önce daima `htmlspecialchars()` kullanarak veya veritabanına kaydetmeden önce uygun sanitasyon/validasyon işlemlerinden geçirerek güvenlik açıklarını (XSS, SQL Injection) önlemeye dikkat edin. PHP'de stringler, web uygulamalarının kalbinde yer alır ve yukarıdaki işlemlerle neredeyse her türlü metinsel veri manipülasyonu kolayca gerçekleştirilebilir.
Son Paylaşımlar
Kategoriler