• 03-04-2013, 18:06:48
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    $string_exp = "/^[A-Za-z .'-]+$/";

    bu şekilde isim ve soyisim alanlarının karakterlerini sınırlıyorum. Ancak bu kod ö,ş,ç gibi karakterleri de engelliyor. Bu regular expression ifadesinin içine türkçe karakterleri de dahil etmek istiyorum. kodlar aşağıdadır.
    Alıntı
    <?php
    if(isset($_POST['email'])) {

    // BURAYA KENDI MAIL ADRESINIZI YAZIN
    $email_to = "info@dddd.com";

    $email_subject = "İletişim Formu";


    function died($error) {
    // your error code can go here
    echo "Üzgünüz, iletişim formunda bazı hatalar var.<br /><br />";
    echo $error."<br /><br />";
    echo "Lütfen geriye dönün ve hataları düzeltin.<br /><br />";
    die();
    }

    // validation expected data exists
    if(!isset($_POST['first_name']) ||
    !isset($_POST['last_name']) ||
    !isset($_POST['email']) ||
    !isset($_POST['telephone']) ||
    !isset($_POST['comments'])) {
    died('Üzgünüz, gnderdiğiniz formda hatalar mevcut.');
    }

    $first_name = $_POST['first_name']; // gerekli
    $last_name = $_POST['last_name']; // gerekli
    $email_from = $_POST['email']; // gerekli
    $telephone = $_POST['telephone']; // gerekli değil
    $comments = $_POST['comments']; // gerekli

    $error_message = "";
    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
    if(!preg_match($email_exp,$email_from)) {
    $error_message .= 'Geçerli bir mail adresi girin.<br />';
    }
    $string_exp = "/^[A-Za-z .'-]+$/";
    if(!preg_match($string_exp,$first_name)) {
    $error_message .= 'Geçerli bir isim girin.<br />';
    }
    if(!preg_match($string_exp,$last_name)) {
    $error_message .= 'Geçerli bir soyisim girin.<br />';
    }
    if(strlen($comments) < 2) {
    $error_message .= 'Geçerli bir mail mesaj girin.<br />';
    }
    if(strlen($error_message) > 0) {
    died($error_message);
    }
    $email_message = "Form detayları aşağıdadır.\n\n";

    function clean_string($string) {
    $bad = array("content-type","bcc:","to:","cc:","href");
    return str_replace($bad,"",$string);
    }

    $email_message .= "First Name: ".clean_string($first_name)."\n";
    $email_message .= "Last Name: ".clean_string($last_name)."\n";
    $email_message .= "Email: ".clean_string($email_from)."\n";
    $email_message .= "Telephone: ".clean_string($telephone)."\n";
    $email_message .= "Comments: ".clean_string($comments)."\n";


    // create email headers
    $headers .= 'Content-type: text/html; charset=iso-8859-9' . "\r\n";
    $headers .= 'From: '.$email_from."\r\n". 'Reply-To: '.$email_from."\r\n" . 'X-Mailer: PHP/' . phpversion();
    @mail($email_to, $email_subject, $email_message, $headers);
    ?>

    <html>
    <head>
    <meta http-equiv=content-type content=text/html;charset=iso-8859-9>
    </head>
    <body>


    Mesajınız için teşekkür ederiz, yakında sizinle iletişime geçeceğiz.
    </body>
    </html>

    <?php
    }
    die();
    ?>
  • 04-04-2013, 02:37:31
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Şöyle dener misin?

    $string_exp = "/^[öÖçÇğĞüÜışŞİA-Za-z .'-]+$/";
  • 04-04-2013, 09:39:56
    #3
    erginkeles adlı üyeden alıntı: mesajı görüntüle
    Şöyle dener misin?

    $string_exp = "/^[öÖçÇğĞüÜışŞİA-Za-z .'-]+$/";
    malesef olmadı
  • 04-04-2013, 19:57:01
    #4
    regex desenindeki a-zA-Z deseninin en büyük sıkıntısı türkçe karakterleri görmezden gelmesi.

    birinci yol :
    $string_exp = "/^[À-ÿa-zA-Z .'-]+$/";

    ikinci yol :
    $string_exp = "/^[a-zA-Z çÇıİşŞğĞüÜöÖ.'-]+$/";

    2. yolu kullanmanı tavsiye ederim.
  • 04-04-2013, 19:59:39
    #5
    fatihsarac adlı üyeden alıntı: mesajı görüntüle
    regex desenindeki a-zA-Z deseninin en büyük sıkıntısı türkçe karakterleri görmezden gelmesi.

    birinci yol :
    $string_exp = "/^[À-ÿa-zA-Z .'-]+$/";

    ikinci yol :
    $string_exp = "/^[a-zA-Z çÇıİşŞğĞüÜöÖ.'-]+$/";

    2. yolu kullanmanı tavsiye ederim.
    Ben de benzer bir örnek verdim ama çalışmadı dedi. Bir de ters şekilde yazsın bakalım.

    Ben bunu vermiştim.
    $string_exp = "/^[öÖçÇğĞüÜışŞİA-Za-z .'-]+$/";
  • 04-04-2013, 20:05:36
    #6
    erginkeles adlı üyeden alıntı: mesajı görüntüle
    Ben de benzer bir örnek verdim ama çalışmadı dedi. Bir de ters şekilde yazsın bakalım.

    Ben bunu vermiştim.
    $string_exp = "/^[öÖçÇğĞüÜışŞİA-Za-z .'-]+$/";
    açıkcası hocam regex başlı başına bir yazılım dili bence. ben de o kadar yetkin değilimdir regex desenlerinde. hatta bazen ilk deseni yazıp denediğimde çalışınca şaşırıyorum, "*** aslında bunun çalışmaması lazım" diyorum

    ama bildiğim kadarıyla ilk bölüme sabit deseni sağ tarafına ise desene ek olarak desteklenecek karakterleri yazıyorum diye biliyorum.

    denesin arkadaş bakalım.
  • 05-04-2013, 09:26:57
    #7
    malesef böle bi sorunla karşılasıyorum
    Warning: preg_match(): Empty regular expression in /vhosts/yaz-ka.com/http/html_form_send.php on line 36 Üzgünüz, iletişim formunda bazı hatalar var.
  • 08-04-2013, 17:56:59
    #8
    sorun devam ediyor :S
  • 05-05-2013, 23:42:17
    #9
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Arkadaşların verdiği Regex örgüsünde bir hata yok.
    Sizin sıkıntınız regex'den ziyade charset=iso-8859-9 ile alakalı görünüyor.