[RESOLU] PCRE preg_match : tout sauf ce caractère

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] PCRE preg_match : tout sauf ce caractère

PCRE preg_match : tout sauf ce caractère

par two3d » 11 mars 2021, 01:50

[edit]

solution trouvée en mettant l'option U

J'essaye de trouver le format "[lien|texte]" dans mon contenu et de le décortiquer pour créer un lien cliquable, le problème c'est que le caractère de fin ] et compris dans les résultats, ce qui donne,
//pour l'exemple: '[lie]n|texfg]gfgf]'
 1 => string 'lie]n' (length=5)
  2 => string 'texfg]gfgf' (length=10)

je souhaite évidement m’arrêter à "texfg" (au premier crochet fermant) mais jy arrive pas, que ce soit avec les assertions ou avec les classes complémentées, voici ce que j'ai fait:

preg_match("#^\[(.+)\|(.+)\]$#","[lie]n|texfg]gfgf]",$match)//prend évidement tout!
preg_match("#(\[lien\|([a-z0-9'-_ ][^\]])\])#i","[lie]n|texfg]gfgf]",$match);//aucun retour
preg_match("#(\[lien\|([a-z0-9'-_ ]+(?!]))\])#i","[lie]n|texfg]gfgf]",$match);//aucun retour

//pour faire mes tests j'utilise le var_dump:
$tester="[lie]n|texfg]gfgf]";
var_dump(preg_match("#(\[lien\|([a-z0-9'-_ ]+(?!]))\])#i",$tester,$match),$match);