Expressions régulières "ne contient pas ..."

Résolu
Aka13 Messages postés 153 Date d'inscription   Statut Membre Dernière intervention   -  
 Djizeuss -
Bonjour,

J'aimerais faire la fonction

Si la chaine ne commence pas par "ABC" alors la fonction "imagestring($im, 1, 14, 2, "$texte", $black);" est apliquée

Si la chaine commence par "ABC" alors la fonction "imagestring($im, 1, 14, 2, "$texte", $black);" n'est pas appliquée


J'ai déjà chercher sur https://www.commentcamarche.net/contents/803-php-expressions-regulieres mais je n'ai pas trouvé pour "ne contient pas"

2 réponses

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Je ne sais pas comment faire et je ne connais pas le PHP, mais avec la logique, tu peux t'en sortir.
En gros tu fais :
if( /* test sur ABC*/) {imagestring($im, 1, 14, 2, "$texte", $black);}
Deux solutions logique peuvent s'appliquer : le "non" logique ou le "sinon" du if (en supposant que tu sache détecter une chaine commençant par ABC)
if( ! find("^ABC",string)) {imagestring($im, 1, 14, 2, "$texte", $black);}

ou alors :
if( find("^ABC",string) ) {/*ne fait rien */;}else {imagestring($im, 1, 14, 2, "$texte", $black);}

tu aura compris que ce que je veux dire par find("^ABC",string) c'est une fonction qui renvoie vrai so la chaine string commence par ABC.
0
heyquem Messages postés 759 Date d'inscription   Statut Membre Dernière intervention   131
 
"ne contient pas" c'est très différent de "ne commence pas"
Comment faire de l'informatique si on ne voit pas des choses comme ça ?

donc pour "ne commence pas", c'est
if preg_match('~^(?!ABC)~')
-1
Aka13 Messages postés 153 Date d'inscription   Statut Membre Dernière intervention   8
 
J'avais fait une faute dans le titre mais on ne peut plus changer c'est pour sa :s
Sinon pour ton code il y a un problème, ou est le nom de la chaine ?
0
heyquem Messages postés 759 Date d'inscription   Statut Membre Dernière intervention   131
 
ouais ben moi je vois ça , DANS LE MESSAGE:

Si la chaine ne commence pas par "ABC"......
Si la chaine commence par "ABC" ....

... mais je n'ai pas trouvé pour "ne contient pas"


Alors les excuses à la noix.....





Comme ce qui était le plus décrit était :
Si la chaine ne commence pas par "ABC"......
Si la chaine commence par "ABC" ....

j'ai répondu pour "ne commence pas"



Sinon, si c'est "ne contient pas" qu'il te faut, c'est
if preg_match('~^(?!.*?ABC.*\z)~')

Remarque:
je ne sais jamais si c'est \z ou \Z qu'il faut utiliser. Encore pas compris la différence.
0
Aka13 Messages postés 153 Date d'inscription   Statut Membre Dernière intervention   8
 
Je peut savoir pourquoi tu me dit tout sa ?
C'est "ne commence pas" ce que je cherche...
Je t'es dit j'ai fait une faute dans le titre j'aurais du mettre "ne commence pas..."

Et sinon je t'es dit :
Sinon pour ton code il y a un problème, ou est le nom de la chaine ?
0
Djizeuss
 
Heyquem: tu devrais faire avocat ou commercial si tu aimes tant jouer sur les mots. En attendant, ton arrogance "à la noix" ne nous aide pas beaucoup.

Aka: tu as trouvé la solution ? je suis intéressé aussi.
0