Tüm alfa karakterler veya bir tire veya kesme işareti olduğundan emin olmak için bir isim alan doğrulamak için çalışılıyor

5 Cevap php
if(!preg_match("/[a-zA-Z'-]/",$First)) { die ("invalid first name");}

alan tüm sayısal olduğunda geçersiz olarak yukarıdaki tek bayrakları girdi. harf ve sayı kombinasyonları ok geçmektedir. Bazı newby için buraya lütfen yardım edin. teşekkürler.

5 Cevap

Deneyin:

if(!preg_match("/^[a-zA-Z'-]+$/",$First)) { die ("invalid first name");} 

^ dize başında eşleşir $ dizenin sonuna eşleşir ve + bir karakter grubu eşleşen karakterleri "bir veya daha fazla" anlamına gelir sonra.

Sadece bir tek karakter eşleme ediyoruz. Sen + (1 veya daha fazla) gibi joker eklemeniz gerekir. Ayrıca dize yerde eşleşen ediyoruz. Emin geçersiz karakterler olmadığından emin olmak için (dize sonu için ^ dize başlaması için, $) çapa eklemeniz gerekir.

if (!preg_match("/^[a-zA-Z'-]+$/", $First)) { die ("invalid first name");}

Alternatif olmayan bir eşleştirme karakteri için bakabilirsiniz:

if (preg_match("/[^a-zA-Z'-]/", $First)) { die ("invalid first name");}

^ köşeli parantez içinde burada "bunlardan biri değil, herhangi bir karakter" anlamına gelir.

Daha iyi bu durumda deneyin ve karakterlerin her maç, tek bir geçersiz karakter görünene kez arama çıkabilirsiniz ve başarısızlık dönmek için daha geçersiz karakterler bakmak için. Bu her zaman bütün dize tarayarak daha verimlidir.

if (preg_match("/[^A-Za-z'-]/", $First)) { die ("invalid first name"); }

^ set içinde [] bu sette her şey değil maç yapar. biz bile bir geçersiz karakter varsa dize geçersiz olduğu ve bir tekrarlama operatörü için seti için gerek yoktur.

Daha iyi, daha yararlı bir hata mesajı olacaktır

if (preg_match("/[^A-Za-z'-]/", $First, $Inv)) { die ("{$Inv[0]} not allowed in first name"); }

Eğer TAM ADI örneğin istiyorum örtmek, bu birini deneyebilirsiniz "JOHN RAMBO"

Da HTML FORM.PHP

<div class="error"><?php echo $error['name']; ?></div>
<input name="name" type="text" value="<?php echo $input['name']; ?>" class="inputf">

PHP İLETİŞİM SAYFA

if(!preg_match("/^[a-zA-Z'-]/", $input['name']))
{
    // name is in-valid
    $error['name'] = 'Invalid Name';
    include('views/form.php');
}

"Pierre Bézier" formunuzu doldurun böylece aksanlı karakterler ekleyerek, muhtemelen çok akıllı. Ekleme:

À-ÿ

.. Senin regex için yapacağız. Her şeyi ile böyle bir şey, dahil:

/^([a-zA-ZÀ-ÿ-' ]+)$/