Merhaba,
Bu yazımda mümkün olduğunca uzun yoldan basit bir filtreleme / sansür sistemi yazarak size PHP'de metin işlemlerinin mantığını ve birkaç dosya işlemleri fonksiyonunu göstermeyi amaçlıyorum.
Önce yapılacaklar listemizi çıkaralım :
- Bir kelimeler.txt dosyamız olacak ve yasak kelimeler
şeklinde bu dosyada tutulacak.
- kelimeler.txt dosyası okunup, tüm içeriği (yani tüm yasaklı kelimeler) bir değişkene aktarılacak
- Değişken | işareti baz alınarak parçalanacak böylece tüm yasaklı kelimeler bir dizi değişkenine aktarılmış olacak
- strtr() fonksiyonuyla sansür işlemi gerçekleştirilecek.
Şimdi ilk olarak sansür uygulayacağımız cümleyi belirleyelim:
|
|
| Merhaba benim adım eray soyadım ise alakese |
|
Yasak kelimelerimiz de
eray ve
alakese olsun.
kelimeler.txt dosyamızın içeriği yukarıdaki gibi olmalı.
Sıra geldi, kelimeler.txt dosyasını okuyup, içeriğini bir değişkene atamaya.
|
|
| $dosya = fopen('kelimeler.txt','r'); |
|
fopen fonksiyonu aracılığıyla dosyamızla bağlantı kuruyoruz. 2. parametre ile dosya izinlerini belirlemiş oluyoruz.
r => sadece okunabilir
w => okunabilir, yazılabilir
|
|
| while (!feof($dosya))
| | {
| | $kelimeler .= fgets ($dosya,10240);
| | } |
|
Her dosyanın sonunda bir
End Of File (eof) komutu vardır. PHP'de bu eof komutu feof() fonksiyonu ile aratılır.
kısmı döngünün, dosyada EOF komutu bulana kadar (yani dosyanın sonuna gelene kadar) devam etmesini sağlar.
|
|
| $kelimeler .= fgets ($dosya,10240); |
|
kısmı ise dosyanın xxx parçalar halinde okunup $kelimeler değişkenine atanmasını sağlar.
Şuan en baştaki örneğimize göre bakacak olursak $kelimeler değişkeninin değeri şu oldu :
Ancak bizim eray ve alakese değerlerini içeren bir dizi değişkenine, yani $kelimeler değişkenini | işaretini baz alarak parçalamaya ihtiyacımız var.
|
|
| $kelimeler = explode("|",$kelimeler); |
|
Şimdi explode fonksiyonu ile eray|alakese metnini parçadık ve şöyle bir dizi elde ettik.
|
|
| $kelimeler[1] = "eray"; $kelimeler[2] = "alakese"; |
|
Bu dizi değişkenini şimdilik bu şekilde bırakıp, bir de strtr() fonksiyonuna göz atalım. strtr() fonksiyonu ile verilen bir metindeki istediğimiz kelimeleri topluca değiştirebiliriz. Örnek verecek olursak:
|
|
| $yasak = array(
| | "ali" => "hüseyin",
| | "ahmet" => "mehmet");
| | strtr("ali ile ahmet", $yasak); |
|
bu örnekte strtr $yasak dizi değişkenine bakarak, bütün ali'leri hüseyin'e ; bütün ahmetleri mehmet'e çevirecek.
O halde bizim de
|
|
| $kelimeler["eray"] = "***"; |
|
şeklinde bir dizi değişkenine ihtiyacımız var ama bizim dizi değişkenimiz
şeklinde. Bu dönüşümü yapmak için aşağıdaki kod yeterli olacaktır.
|
|
| foreach($kelimeler as $kelime){ $deger=$kelime; $kelimeler[$deger]="***"; } |
|
Ve son olarak da
|
|
| echo strtr("Merhaba benim adım eray soyadım ise alakese", $kelimeler"); |
|
komutuyla gerekli filtreleme işlemini yapabilirsiniz. Tabiki PHPnin fonksiyon denizinde bu işlemleri çok daha kolay olarak yapmanızı sağlayacak fonksiyonlar var. Ben bu yazı, özellikle açıklamaları detaylandırarak, başlangıç seviyesinde okuyuculara birşeyler katmaya çalıştım.