• 14-02-2014, 19:54:10
    #1
    Formdan gelen karakter sayısını almak için şöyle bi fonksiyon hazırladım;
    function karakter_kontrol( $data, $min, $max, $num=false ){
    	$sonuc = true;
    	$say = strlen(iconv("UTF-8", "ISO-8859-9", $data));
    	if( ($say < $min) || ($say > $max) ){ $sonuc = false; }
    	if( ($num == true) && (!ctype_digit($data)) ){ $sonuc = false; }
    	return $sonuc;
    }
    
    if( karakter_kontrol($_POST['baslik'],3,150,false) != true ){ echo "Başlık 'en az 3', 'en çok 150' karakter içerebilir "; exit;}
    fonksiyonda iconv()'yi kullanmazsam çşüğ gibi özel karakterleri birden fazla karakter olarak algılıyo. iconv ile bu sorunu aştım, şu an karakter sayısı doğru ama bu defa da stringde `,′,“,” gibi tuhaf karakterler varsa hata veriyo. Sadece tuhaf tırnaklarda değil sorun; http://www.danshort.com/ASCIImap/ burdaki nerdeyse tüm tuhaf karakterlerde iconv satırında hata veriyor.

    hem karakterlerin kendini kullanarak, hem de chr() içine rakamsal ascii değerlerini girerek iconv()'den önce replace etmeyi denedim ama işe yaramadı.

    Yardımcı olabilirseniz sevinirim. Saygılar.
  • 14-02-2014, 20:01:06
    #2
    ISO-8859-9 charsetinde o karakterler olmadığı için hata veriyor olabilir.

    str_replace ile hata veren karakterleri normal tek tırnak veya çift tırnak şekilde dönüştürüp öyle deneyin.

    Edit: iconv den önce ekleyip dener misin?

    $data = str_replace(array('`','′','“','”'), array('\'','\'','"','"'), $data);
  • 14-02-2014, 20:05:14
    #3
    replace etmeyi denedim ama işe yaramadı;

    $eski		= array(chr(145), chr(146), chr(147), chr(148) );
    $yeni		= array('"','"',"'","'");
    $data		= str_replace($eski, $yeni, $data);
    veya
    $eski		= array("`","′",'“','”');
    $yeni		= array("'","'",'"','"');
    $data		= str_replace($eski, $yeni, $data);
    gibi bikaç şey denedim ama replace etmiyor. Olduğu gibi kalıyor karakterler.
  • 14-02-2014, 20:08:46
    #4
    dark_way adlı üyeden alıntı: mesajı görüntüle
    Formdan gelen karakter sayısını almak için şöyle bi fonksiyon hazırladım;
    function karakter_kontrol( $data, $min, $max, $num=false ){
    	$sonuc = true;
    	$say = strlen(iconv("UTF-8", "ISO-8859-9", $data));
    	if( ($say < $min) || ($say > $max) ){ $sonuc = false; }
    	if( ($num == true) && (!ctype_digit($data)) ){ $sonuc = false; }
    	return $sonuc;
    }
    
    if( karakter_kontrol($_POST['baslik'],3,150,false) != true ){ echo "Başlık 'en az 3', 'en çok 150' karakter içerebilir "; exit;}
    fonksiyonda iconv()'yi kullanmazsam çşüğ gibi özel karakterleri birden fazla karakter olarak algılıyo. iconv ile bu sorunu aştım, şu an karakter sayısı doğru ama bu defa da stringde `,′,“,” gibi tuhaf karakterler varsa hata veriyo. Sadece tuhaf tırnaklarda değil sorun; http://www.danshort.com/ASCIImap/ burdaki nerdeyse tüm tuhaf karakterlerde iconv satırında hata veriyor.

    hem karakterlerin kendini kullanarak, hem de chr() içine rakamsal ascii değerlerini girerek iconv()'den önce replace etmeyi denedim ama işe yaramadı.

    Yardımcı olabilirseniz sevinirim. Saygılar.
    mb_strlen işinizi görecektir, ekstradan iconv vs. kullanmanız gerekmiyor.
    http://www.php.net/manual/tr/function.mb-strlen.php
  • 14-02-2014, 20:12:04
    #5
    Irresistible adlı üyeden alıntı: mesajı görüntüle
    mb_strlen işinizi görecektir, ekstradan iconv vs. kullanmanız gerekmiyor.
    http://www.php.net/manual/tr/function.mb-strlen.php
    Daha önce nasıl keşfetmedim bunu ya. Teşekkürler.
  • 14-02-2014, 20:12:41
    #6
    iconv yerine utf8_decode deneseniz bir de?

    Edit: Cevap gelmiş bile