2017-09-29 5 views
-1

Je voulais vérifier si une chaîne contient des mots spécifiques? Selon How do I check if a string contains a specific word? je peux utiliser strpos() fonction.Comment utiliser les conditions sur des fonctions comme strpos() en PHP?

Exemple de code écrit, je

if(strpos($value, 'filters(10)') === false){ 
    //Do something 
} else { 
    //Do Another Thing 
} 

Si je dois vérifier mot spécifique filters(10) fonctions ci-dessus fonctionne très bien. Mais je dois vérifier tous les numéros au-dessus de 10 avec le mot-clé.

Exemple

$value = 'bla bla bla bla' // Should return false 
$value = 'bla bla filters(1) bla bla' // Should return false 
$value = 'bla bla filters(5) bla bla' // Should return false 
$value = 'bla bla filters(10) bla bla' // Should return true 
$value = 'bla bla filters(15) bla bla' // Should return true 
$value = 'bla bla filters(20) bla bla' // Should return true 

Comment modifier mon code pour obtenir les résultats ci-dessus?

Répondre

1

Ici vous pouvez utiliser Regex pour obtenir ce numéro particulier. puis appliquer d'autres conditions.

Regex:filters\((\d+)\)

Cela correspondra à filters( puis capturer chiffres puis )

Try this code snippet here

preg_match("#filters\((\d+)\)#", $value, $matches); 
if(isset($matches[1]) && $matches[1]>10) 
{ 
    //do something on true 
} 
else 
{ 
    //do something on false 
} 
+1

Merci. Cela a fonctionné parfaitement bien. Même si j'ai lu beaucoup d'articles sur preg_match, je ne peux toujours pas impliquer quelque chose comme ce que vous avez écrit moi-même ... Pouvez-vous fournir un lien expliquant comment écrire preg_match facilement ... Merci. –

+1

@IamtheMostStupidPerson Vous pouvez vérifier le fonctionnement de base ici https://regex101.com/ –

0

Vous pouvez analyser l'élément dans filters() et le comparer avec 10

if(($pos = strpos($value, 'filters(10)')) === false){ 
    if(intval(substr($value, $pos + strlen('filters('))) > 10) { 
    //Do something 
    } else {// do another thing} 
} else { 
    //Do Another Thing 
}