2016-10-17 1 views
-3

Je veux trouver 4 dans une chaîne. Juste 4, pas 44 ou 14 ou 4444 ...php trouver le caractère dans la chaîne, mais le caractère seul

Je ne peux pas utiliser strpos car il renvoie 0 quand 4 est trouvé mais aussi quand 44 est trouvé ou quand 444444 est trouvé.

Quelle est la fonction que je devrais utiliser?

Merci

+0

Il renvoie zéro parce qu'il trouvé '4' dans la colonne' 0' – RiggsFolly

+0

@FrayneKonok Je ne suis pas celui qui fait la conjecture, vous êtes – RiggsFolly

+0

Bienvenue à SO. S'il vous plaît jeter un oeil à [la tournée] (http://stackoverflow.com/tour). Vous pouvez également consulter [Quels sujets puis-je poser à propos de] (http://stackoverflow.com/help/on-topic) et [Comment poser une bonne question] (http://stackoverflow.com/help/ how-to-ask), et [La question parfaite] (http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/), et comment créer un [Minimal, Complete et Exemple vérifiable] (http://stackoverflow.com/help/mcve). Postez le code que vous avez essayé et les erreurs que vous avez reçues. Soyez aussi précis que possible car cela mènera à de meilleures réponses. –

Répondre

0

Utilisation preg_match() avec negative lookbehind and negative lookahead:

preg_match('/((?<!4)4(?!4))/', $string, $m); 
if ($m && count($m) == 2) { 
    // matched "only one 4" 
} 
+0

Je pense que ce n'est pas juste une supposition, c'est votre réponse et vous comprenez ce que le PO veut de cette question. –

+1

@FrayneKonok, il y a toujours une chance de ne pas comprendre correctement l'OP. Salut pourrait être plus précis, mais je pense avoir compris ce qu'il voulait dire. –

+0

Je vais reformuler cela. Si j'utilise la chaîne de test '$ string = '444 ou 4444 ou 44';' elle trouve 'juste 4' sur le' 24' final – RiggsFolly

1

Essayez, utilisez preg_match_all

$str = 'Just 44 4 test 444'; 
preg_match_all('!\d+!', $str, $matches); 
// print_r($matches); 


if (in_array("4", $matches[0])){ 
    echo "Match found"; 
    } 
else 
{ 
    echo "Match not found"; 
} 

DEMO

+0

Je n'arrive pas à le casser! UV – RiggsFolly

+0

@miguelmas Cochez cette réponse, il semble incassable – RiggsFolly