Page 1 sur 1

PCRE preg_match : tout sauf ce caractère

Posté : 11 mars 2021, 01:50
par two3d
[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);