2010-07-19 15 views

Respuesta

20

Otra forma usando substr:

if (substr('ab_123456789', 0, 3) === 'ab_') 

Aquí substr se utiliza para tomar los primeros 3 bytes que comienzan en la posición 0 como una cadena que se compara entonces con 'ab_'. Si desea agregar insensibilidad a las mayúsculas y minúsculas, use strcasecmp.


Editar para hacer el uso más cómodo, usted podría utilizar el startsWith siguiente función:

function startsWith($str, $prefix, $case_sensitivity=false) { 
    if ($case_sensitivity) { 
     return substr($str, 0, strlen($prefix)) === $prefix; 
    } else { 
     return strcasecmp(substr($str, 0, strlen($prefix)), $prefix) === 0; 
    } 
} 

Tenga en cuenta que estas funciones no son compatibles con caracteres de varios bytes como se comparan sólo bytes. Una función equivalente con soporte multi-byte podría tener este aspecto:

function mb_startsWith($str, $prefix, $case_sensitivity=false) { 
    if ($case_sensitivity) { 
     return mb_substr($str, 0, mb_strlen($prefix)) === $prefix; 
    } else { 
     return mb_strtolower(mb_substr($str, 0, mb_strlen($prefix))) === mb_strtolower($prefix); 
    } 
} 

Aquí se asume la codificación de caracteres de ambas cadenas a ser el internal character encoding.

6

utilizar expresiones regulares

$var = "ab_123456789"; 
if(preg_match('/^ab_/', $var, $matches)){ 
    /*your code here*/ 
} 
+0

preg_match devolverá 0 si nada coincide o un número entero que representa el número de veces que se encontró la coincidencia. – gehsekky

+0

(bool) 0 === falso -> true – cypher

6

Puede utilizar strpos():

$text = "ab_123456789"; 
if(strpos($text, "ab_") === 0) 
{ 
    // Passed the test 
} 
+3

Tenga en cuenta que 'strpos' buscará hasta que se encuentre una coincidencia o se llegue al final de la cadena. – Gumbo

+0

Hmm, buen punto –

1

Es bastante fácil, ya que la cadena se puede acceder como un array de caracteres. Entonces solo tiene que hacer algo como:

if ($var[0] == "a" && $var[1] == "b" && $var[2] == "c") 
    return true 

También podría utilizar una función de búsqueda de la biblioteca php.

+2

Las cadenas no son matrices en PHP. –

+0

@Daniel Egeberg: Pero se puede acceder a cadenas como matrices. Consulte http://php.net/manual/en/language.types.string.php#language.types.string.substr – Gumbo

+0

No es un objeto Array, pero puede acceder a él como lo hace para una matriz. –

1

La manera más fácil sería obtener una cadena secundaria. p.ej. substr('ab_123456789', 0, 3);

Cuestiones relacionadas