Str_Replace Sunucuda Çalışmıyor
-
selamlar
elimde iki gündür uğraştığım bir işvar
lakin şöyle garip bi sorunum var : str_replace ile türkçe karakterleri temizlemeye çalışıyorum
lokalde çalışan kod sunucuda çalışmıyo
sunucu debian
bi ton aradım internette bişey bulamadım, ne önerirsiniz ?
-
Türkçe karakterleri char değeri ile yazıp replace etseniz hocam?
Edit: yada Türkçe karakterleri echo ile yazdırdığınızda ne cikti veriyor?
biri tarafından 03/Eyl/16 23:07 tarihinde düzenlenmiştir -
preg_replace ile yapabilirsin. Şöyle bir örnek buldum nette :
function sefyap ( $fonktmp ) { $returnstr = ""; $turkcefrom = array("/Ğ/","/Ü/","/Ş/","/İ/","/Ö/","/Ç/","/ğ/","/ü/","/ş/","/ı/","/ö/","/ç/"); $turkceto = array("G","U","S","I","O","C","g","u","s","i","o","c"); $fonktmp = preg_replace("/[^0-9a-zA-ZÄzÜŞİÖÇğüşıöç]/"," ",$fonktmp); // Türkçe harfleri ingilizceye çevir $fonktmp = preg_replace($turkcefrom,$turkceto,$fonktmp); // Birden fazla olan boşlukları tek boşluk yap $fonktmp = preg_replace("/ +/"," ",$fonktmp); // Boşukları - işaretine çevir $fonktmp = preg_replace("/ /","-",$fonktmp); // Tüm beyaz karekterleri sil $fonktmp = preg_replace("/\s/","",$fonktmp); // Karekterleri küçült $fonktmp = strtolower($fonktmp); // Başta ve sonda - işareti kaldıysa yoket $fonktmp = preg_replace("/^-/","",$fonktmp); $fonktmp = preg_replace("/-$/","",$fonktmp); $returnstr = $tmpdate . $fonktmp; return $returnstr; }//sef url için fonksiyon
Biraz takla atacaksın ama str_replace' ın sunucuda çalışmamasına anlam veremiyorum.
PHP versiyonun nedir ?
Edit : Banane deprecated olduysa, sanki umrumda diyorsan; kodun başına error_reporting(0); ekle, yukarıdaki koddan faydalan direk.
-
@ozgunlu preg_replace değil, onunla e (eval) değiştiricisi kullanmak deprecated oldu. Bir işlev artık önerilmiyorsa yerine yeni öneri yapılır. Artık preg_replace'i e değiştiricisi ile kullanmak yerine preg_replace_callback kullanılması öneriliyor.
-
buzukatak bunu yazdı
@ozgunlu preg_replace değil, onunla e (eval) değiştiricisi kullanmak deprecated oldu. Bir işlev artık önerilmiyorsa yerine yeni öneri yapılır. Artık preg_replace'i e değiştiricisi ile kullanmak yerine preg_replace_callback kullanılması öneriliyor.
Teşekkür ederim hocam düzelttiğin için, ben preg_replace' ın deprecated olduğunu sanmıştım.
O zaman yukarıdaki kod arkadaşın işini görecektir.
-
ozgunlu bunu yazdı
preg_replace ile yapabilirsin. Şöyle bir örnek buldum nette :
function sefyap ( $fonktmp ) { $returnstr = ""; $turkcefrom = array("/Ğ/","/Ü/","/Ş/","/İ/","/Ö/","/Ç/","/ğ/","/ü/","/ş/","/ı/","/ö/","/ç/"); $turkceto = array("G","U","S","I","O","C","g","u","s","i","o","c"); $fonktmp = preg_replace("/[^0-9a-zA-ZÄzÜŞİÖÇğüşıöç]/"," ",$fonktmp); // Türkçe harfleri ingilizceye çevir $fonktmp = preg_replace($turkcefrom,$turkceto,$fonktmp); // Birden fazla olan boşlukları tek boşluk yap $fonktmp = preg_replace("/ +/"," ",$fonktmp); // Boşukları - işaretine çevir $fonktmp = preg_replace("/ /","-",$fonktmp); // Tüm beyaz karekterleri sil $fonktmp = preg_replace("/\s/","",$fonktmp); // Karekterleri küçült $fonktmp = strtolower($fonktmp); // Başta ve sonda - işareti kaldıysa yoket $fonktmp = preg_replace("/^-/","",$fonktmp); $fonktmp = preg_replace("/-$/","",$fonktmp); $returnstr = $tmpdate . $fonktmp; return $returnstr; }//sef url için fonksiyon
Biraz takla atacaksın ama str_replace' ın sunucuda çalışmamasına anlam veremiyorum.
PHP versiyonun nedir ?
Edit : Banane deprecated olduysa, sanki umrumda diyorsan; kodun başına error_reporting(0); ekle, yukarıdaki koddan faydalan direk.
abi sagol ya, cok isime yaradi
-
Sorun çözülmüş ama yinede şunu bilmende fayda olabilir ilerde; sunucu karakter seti türkçe yi barındıran utf-8 değilse böyle sorunlar yaşayabilirsin. Php de config den ayarlanabiliyorsa charseti utf-8 yap.