2011-02-06 11 views
7

Quiero una instrucción if que use la misma cosa como mysql something LIKE '%something%'PHP Algo similar a MySQL Like, for if statement?

Quiero construir una sentencia if en php.

if ($something is like %$somethingother%) 

¿Es posible?

La razón por la que hago esta pregunta es porque no quiero cambiar el comando de MySQL, es una página larga con muchas cosas, no quiero crear una función diferente para esto.

Vamos a saber si esto es posible, si es posible, entonces, ¿cómo hacerlo.

Respuesta

18

if ($ algo es como somethingother% $%)

¿Es posible?

no.

No quiero cambiar el comando de MySQL, es una página larga con muchas cosas en él

Usar un buen editor, que soporta expresiones regulares en el hallazgo & sustituir, y convertirlo a algo así como:

if(stripos($something, $somethingother) !== FALSE){ 

} 
+2

strpos era perfecto :) – friendishan

2

Uso función, esa cadena de búsqueda en otra cadena como: strstr, strpos, substr_count.

12

que sé, esta pregunta no es real, pero he resuelto problema similar :)

Mi solución:

/** 
* SQL Like operator in PHP. 
* Returns TRUE if match else FALSE. 
* @param string $pattern 
* @param string $subject 
* @return bool 
*/ 
function like_match($pattern, $subject) 
{ 
    $pattern = str_replace('%', '.*', preg_quote($pattern, '/')); 
    return (bool) preg_match("/^{$pattern}$/i", $subject); 
} 

Ejemplos:

like_match('%uc%','Lucy'); //TRUE 
like_match('%cy', 'Lucy'); //TRUE 
like_match('lu%', 'Lucy'); //TRUE 
like_match('%lu', 'Lucy'); //FALSE 
like_match('cy%', 'Lucy'); //FALSE 
+1

me gusta - un pequeño cambio. La línea del patrón debe ser '$ pattern = str_replace ('%', '. *', Preg_quote ($ pattern, '/'));'. De lo contrario, las barras diagonales no se escaparán para preg_match(). –

+0

He actualizado mi respuesta. Gracias @JohnReid! –

0

Pero tendrán que dar cadena en minúsculas entonces todo funcionará bien. Ejemplo de la función strstr:

$myString = "Hello, world!"; 
echo strstr($myString, "wor");     // Displays 'world!' 
echo (strstr($myString, "xyz") ? "Yes" : "No"); // Displays 'No'