2010-05-29 42 views
6

Me preguntaba si se pueden permitir espacios en un campo de texto cuando se comprueba con ctype_alpha. Como ctype_alpha solo permite letras alfabéticas, no sé cómo dejar que el usuario ingrese espacio en el campo. Intenté usar ctype_space pero eso no funcionó. Simplemente quiero que el usuario pueda escribir solo alfabetos y tienen la opción de incluir espacios si lo desean. Espero no tener que usar regexp.ctype_alpha pero allow spaces (php)

elseif (!ctype_alpha($fname)) 
{ 
    echo "Your name may only contain alphabetical letters"; 
} 

Respuesta

19

esto es lo que haría

if (!ctype_alpha(str_replace(' ', '', $fname))) 

esto permite sólo espacios, pero si desea permitir más que espacios, como puntuacion o lo que no, read up on str_replace, permite matrices

str_replace(array(' ', "'", '-'), '', $fname) 

que estoy sugiriendo esto porque primer nombre puede tener apóstrofe y apellido también puede tener guiones

+0

Gracias por la sugerencia, funcionó, y por supuesto también gracias por el enlace! – Raj

+1

Me alegro de escuchar que funcionó para ti Raj. Si esto satisface sus requisitos y no está buscando otras sugerencias, le agradecería mucho que marque la respuesta como aceptada :) Cheers – Raine

+0

+ 1 Solución creativa permite que otros caracteres floten por debajo del radar. Estaba pensando en usar esta función, pero también necesito incluir "-" y "_", ¡gracias! – SeanDowney

1

Usted puede hacer eso también simplemente quitando espacio antes de hacer ctype_alpha.

$fname=str_replace(" ", "", $fname); 

if(!ctype_alpha($fname)){ 
    echo "Your name may only contain alphabetical letters"; 
} 
+0

La validación de una cadena que consta de espacios solo da como resultado un falso de esta manera, mientras que debería dar como resultado un verdadero. Esto porque ctype_alpha devuelve falso (php> v5.1) en una cadena vacía. –

0

Extracción de los espacios es el camino a seguir, pero recuerda resultados ctype_alpha en una falsa sobre una cadena vacía en estos días! A continuación el método que utilizo ...

function validateAlpha($valueToValidate, $spaceAllowed = false) { 
    if ($spaceAllowed) { 
     $valueToValidate = str_replace(' ', '', $valueToValidate); 
    } 
    if (strlen($valueToValidate) == 0) { 
     return true; 
    } 
    return ctype_alpha($valueToValidate); 
} 
Cuestiones relacionadas