2012-04-20 28 views
6

Necesito comprobar una cadena para determinar si contiene caracteres distintos de |, para asignar esas variables que no tienen nada excepto | un valor de NULL (podría haber teóricamente cualquier número de caracteres |, pero probablemente no será más de 5-6). Como ||||Cómo comprobar si una cadena contiene solo caracteres específicos

Pude ver un bucle a través de cada carácter de la cuerda o algo así, pero creo que debe haber una manera más simple.

+1

¿Puedes dar un ejemplo de una cadena que estás manipulando? – jprofitt

Respuesta

13
if (preg_match('/[^|]/', $string)) { 
    // string contains characters other than | 
} 

o:

if (strlen(str_replace('|', '', $string)) > 0) { 
    // string contains characters other than | 
} 
+4

oooh esto me permite seguir sin saber regex! : p – Damon

+0

La primera solución falla en "\ n |" porque por defecto las expresiones regulares no cruzan líneas múltiples – giorgiosironi

2

sí, se puede utilizar expresiones regulares:

if(! preg_match('/[^\|]/', $string)) { 
    $string = NULL; 
} 
0

forma más rápida y sencilla es posiblemente la función stripos. Devuelve la posición de una cadena dentro de otra, o falso si no se puede encontrar:

if (false === stripos($string, '|')) { 
    $string = null; 
} 

El false === se necesita para la estricta comparación de tipos, ya que stripos podrían devolver un cero que indica que la | está en el primer char.

Puede usar un motor de validación más sofisticado que facilita la lectura. Yo recomiendo Respect\Validation. Ejemplo de uso:

if (v::not(v::contains('|'))->validate($string)) { 
    $string = null; 
} 
+1

* No contiene * no es lo mismo que * contiene cualquier cosa además de * ... – deceze

1

Quería comprobar si una cadena solo contiene ciertos caracteres. Para evitar la doble negación (porque me parece que sea más difícil te leen) decidí usar la siguiente expresión regular:

preg_match('/^[|]+$/', $string) 

Esto comprueba una cadena de principio a fin de contener sólo | caracteres (al menos uno).

Cuestiones relacionadas