web-dev-qa-db-fra.com

PHP Comme choisi semblable à MySQL Comme, pour si déclaration?

Je veux une instruction if qui utilise la même chose que mysql something LIKE '%something%'

Je veux construire une déclaration if en php.

if ($something is like %$somethingother%)

C'est possible?

La raison pour laquelle je pose cette question est que je ne veux pas changer la commande MySQL, c'est une longue page avec beaucoup de choses dessus, je ne veux pas créer de fonction différente pour cela.

Faites-moi savoir si cela est possible, si possible, alors comment le faire.

10
friendishan

si ($ quelque chose est comme% $ quelque chose%)

C'est possible?

non.

Je ne veux pas changer la commande MySQL, c'est une longue page avec beaucoup de choses dessus

Utilisez un bon éditeur, qui prend en charge les expressions régulières dans find & replace, et réglez-le comme suit:

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

}
23
dev-null-dweller

Je sais, cette question n'est pas réelle mais j'ai résolu le même problème :)

Ma solution:

/**
 * 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);
}

Exemples:

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
14
Petr Bugyík

regarder sur strstr function

4
Haim Evgi

Utilisez function, cette chaîne de recherche dans une autre chaîne, telle que: strstr, strpos, substr_count.

2
singles

Utilisez cette fonction qui fonctionne de la même manière que SQLCOMMEoperator, mais renvoie une valeur booléenne et vous pouvez créer votre propre condition avec une autre instruction if.

function like($str, $searchTerm) {
    $searchTerm = strtolower($searchTerm);
    $str = strtolower($str);
    $pos = strpos($str, $searchTerm);
    if ($pos === false)
        return false;
    else
        return true;
}
$found = like('Apple', 'app'); //returns true
$notFound = like('Apple', 'lep'); //returns false

if($found){
    // This will execute only when the text is like the desired string
}
0
Bairu

Mais vous devrez donner une chaîne minuscule pour que cela fonctionne correctement. Exemple de fonction strstr:

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