En PHP, ¿debería usar una expresión regular para hacer coincidir esto o algo más?

Necesito poder verificar si una variable contiene la primera parte de una cadena. Por ejemplo, "foobaz xy". Todo lo que esté después de "foobaz xy" se puede ignorar para el partido. Esto también debe ser insensible a mayúsculas y minúsculas y debe haber un espacio entre foobaz y xy. ¿Ya existe una función integrada en PHP que maneja esto, o se requiere una expresión regular para hacer esto? Por último y no menos importante, ¿hay más de un método que tenga un tiempo de ejecución más rápido? ¡Gracias!

preguntado el 29 de julio de 12 a las 13:07

4 Respuestas

No hay una función integrada para ello, pero hay una pequeña solución que puede lograr lo mismo. Revisa el siguiente ejemplo:

$string = "foobaz xyewew";
if (stripos($string, "foobaz xy") === 0) {
    echo "It starts with foobaz xy";
}

Respondido 29 Jul 12, 13:07

Todavía soy nuevo aquí, pero si pudiera, ¡votaría esto con un pulgar hacia arriba! Muchas gracias por su ayuda. Pude tomar este código y hacer una pequeña función que devuelve VERDADERO o FALSO. ¡Esto me ayudará a terminar mi programa y hacerlo más simple! - costa de eduardo

En cuanto al problema de la insensibilidad a mayúsculas y minúsculas, puede copiar la nueva cadena a otra y convertirla en minúsculas, lo que la haría insensible a mayúsculas y minúsculas.

Digamos que la cadena A = foobaz xy y b = sth sth sth, entonces todo lo que necesita hacer es tomar una subcadena de la cadena b que siempre tendrá el tamaño de foobaz xy, por lo tanto, si b es menor que foobaz xy en el número de caracteres, se descontará automáticamente. De lo contrario, debe comparar la subcadena con la cadena constante A y eso resolverá el problema.

ver subcadena php aquí:

vea strcmp aquí para comparar la subcadena y su cadena ver aquí para convertir una cadena en minúsculas

Respondido 29 Jul 12, 13:07

La forma más rápida de comprobar que:

$variable  = "FooBaz xy test string";
$isContain = strpos(strlower($variable, "foobaz xy")) === 0;

Respondido 29 Jul 12, 13:07

La solución @invisal es mejor, se olvidó de la función stripos - Lisachenko

La primera respuesta es correcta, más información sobre http://www.php.net/manual/en/function.stripos.php. Recuerde siempre que es una mala práctica usar expresiones regulares en la verificación de cadenas simples.

Respondido 29 Jul 12, 13:07

Gracias. Tenía la sensación de que no era una buena idea, ¡por eso publiqué para preguntar y me alegro de haberlo hecho! - costa de eduardo

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.