İçeriğe geç

PHP ile İfadenin Başındaki ve Sonundaki Karakterleri Silme

PHP ile bir ifadenin başındaki ve sonundaki ifadeleri silme işlemi ilk başlarda biraz zor görünebilir fakat göründüğü kadar zor bir işlem değil.

Bu işlemi gerçekleştirmek için; trim, ltrim veya rtrim fonksiyonlarını kullanabilirsiniz.

Örneğin bir ifadenin başındaki karakteri silmek için:

ltrim(ifade, 'silinecek_karakter');

Sonundaki karakteri silmek için:

ltrim(ifade, 'silinecek karakter');

yöntemleri kullanılabilinir.

Ya da ifadenin başındaki ve sonundaki aynı karakterleri silmek için:

trim(ifade, 'silinecek_karakter');

kullanılabilinir.

Peki ya x bir ifadenin başındaki ve sonundaki herhangi bir karakteri veya noktalama işaretini silmek istersek? O zaman ne yapmamız gerekiyor?

Bir ifadenin başındaki veya sonundaki istemediğimiz herhangi bir x karakter veya noktalama işaretini silmek için; öncelikle o karakter veya noktalama işaret setini oluşturmalıyız.

Basit olarak; bir noktalama işaretleri için set oluşturalım.

$marks = array(':', ';', '?', '_', '-');

Şayet ifademizin sonunda veya başında bu noktalama işaretlerinden herhangi birisi varsa; bu işareti ifademizden çıkaralım.

Örnek olması açısından bir de ifade tanımlayalım.

$str = '?Hello World_';

substr() fonksiyonu, bildiğiniz gibi belirtilen string bir ifadedenin belirtilen aralığındaki karakter veya karakter gruplarını verir.

İfademizin ilk karakterini almak için aşağıdaki gibi yazmamız yeterlidir.

substr($str, 0, 1);

Bu ifademizin son değerini almak için de;

substr($str, -1, 1);

Yazmamız yeterli olacaktır.

Ya da string bir ifade, char’lardan oluşan bir dizi olduğu için bu string ifadenin index değeri yazılarakta istenilen karaktere ulaşılabilinir.

$str[0]; // ilk karakter
$str[strlen($str) - 1]; // son karakter

Buraya dikkat!

substr() fonksiyonu ile işlem yaparken; karakter bozulma sorunları sıklıkla rastlanır. Özellikle; Türkçe ifadelerde bu sorunla çok sık karşılaşırsınız. substr() fonksiyonu yerine; mb_substr() fonksiyonunu kullanmanız doğru bir seçim olacaktır. Bunun nedeni ise; mb_substr() fonksiyonu multi-byte olarak işlem gerçekleştirir. Fonksiyonumuzun başındaki; mb_ ifadesi de buradan gelmektedir.

substr() fonksiyonunda karakter bozulmalarının nedeni; ASCII karakterler ile çalışmasıdır. Fakat mb_substr() fonksiyonu ASCII karakterler yerine; özel karakterler ile de çalışmaktadır. Dolayısıyla; ASCII tablosunda olmayan karakterleri de desteklemektedir.

Bu yüzden; substr() yerine mb_substr() fonksiyonunu kullanırsanız, herhangi bir karakter sıkıntısı yaşamazsınız.

Şimdi olayımıza geri dönecek olursak; bir karakter seti hazırladık ve mb_substr() fonksiyonu ile ifademizin başındaki ve sonundaki istemediğimiz noktalama işaretlerinin olup olmadığını kontrol edeceğiz. Olması durumunda bu noktalama işaretini ifademizin başından veya sonundan sileceğiz.

Öncelikli olarak; ifademizin başındaki ve sonundaki karakterleri alalım.

$strFirst = mb_substr($str, 0, 1); // ilk karakter
$strLast  = mb_substr($str, -1, 1); // son karakter

Daha sonra da bu karakterin, oluşturmuş olduğumuz noktalama işareti setinde olup olmadığına bakalım.

if (in_array($strFirst, $marks)) {
    // yapilacaklar
}

Yukarıdaki ifadeden de anlaşılacağı üzere; ilk karakter, oluşturmuş olduğumuz karakter setinde olup olmadığının kontrolü yapılıyor.

If ifadesini aşağıdaki gibi doldurmamız yeterli olacaktır.

if (in_array($strFirst, $marks)) {
    $str = substr_replace($str, '', 0, 1);
}

substr_replace() fonksiyonu, belirtilen ifadedeki belirtilen karakter veya karakter gruplarını değiştirir. Biz burada; baştaki ilk karakteri ‘ ‘ ifadesiyle değiştirdik. Yani bu karakteri sildik.

Ekran çıktımız da aşağıdaki gibi olacaktır.

Hello World_

İfademizin başındaki; ? noktalama işaretini sildik.

Aynı işlemi sondaki noktalama işaretini silmek için de uygulayabiliriz. İfademizi aşağıdaki gibi değiştirmemiz yeterli olacaktır.

$str = substr_replace($str, '', -1, 1);

Daha sade bir kodlama oluşturmak için de aşağıdaki gibi de yazabilirsiniz.

in_array($strFirst, $marks) ? $str = substr_replace($str, '', 0, 1) : false;
in_array($strFirst, $marks) ? $str = substr_replace($str, '', -1, 1) : false;

substr_replace() fonksiyonunu kullanmadan daha farklı yollarla da bu işlemi gerçekleştirebilirsiniz. Ben en sade yöntemini göstermeye çalıştım.

Çeşitli projelerde kullanmak için oluşturmuş olduğum noktalama işaretleri setim aşağıdaki gibidir. Dilerseniz; bu noktalama işaretlerini kullanabilirsiniz. Ya da buradan indirebilirsiniz.

const PUNCTUATION = array('+', ',', '.', '-', '\'', '"', '&', '!', '?', ':', ';', '#', '~', '=', '/', '$', '£', '^', '(', ')', '_', '<', '>', '{', '}', '«', '»', '␠', '@', '·', '*', '•', '°', '¡', '¿', '¬', '№', '%', '|', '¶', '§', '¨', '¦', '⁂', '☞', '∴', '‽', '※', '[', ']', '¤', '¢', '$', '€', '£', '¥', '₩', '₪', '†', '‡', '‰', '‱');

Karakterler için de buradaki satırları kullanabilirsiniz.

Saygı ve muhabbetle!..

Bu içeriği paylaşmak ister misiniz?

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Buradaki içeriklerin tümü kamu malıdır. Kullanılması ve paylaşılması özgürdür.