Comment faire pour preg_replace() avec une seule ligne pour atteindre les sorties suivantes ?regex php: "se débarrasser [link1] se débarrasser [link2] ... se débarrasser" - problème 'se débarrasser' quand il n'y a pas [link]
$string1="get rid1 [link1] get rid2 [link2] ..."; // any number of links
echo "[<a href=link1>link1</a>][<a href=link2>link2</a>]";
$string2="get rid any text any text get rid"; // = no links: is a possibility
echo "";
J'ai essayé les éléments suivants, qui fonctionne par exemple $ chaine1 mais pas pour chaîne2 $ ci-dessus:
$regex="/".
"[^\[\]]*". // the non-bracketed text before: -> eliminate
"\[(.*?)\]". // the bracketed text: [.]: -> convert into links
"[^\[\]]*"; // get rid of non-bracketed text after: -> eliminate
"/";
echo preg_replace($regex,'<a href=jp.php?jp=\1>[\1]</a>',$string1);
Je pense que les groupes non-capture (?:...)
pourrait fonctionner, mais je ne peux pas le comprendre ...
Je suis confus par ce "se débarrasser". Est-ce toujours "se débarrasser"? Ou peut-il être autre chose? C'est vague. – BeemerGuy
et vous dites qu'il échoue lorsqu'il n'y a pas de [[liens] ", eh bien, il n'y aura pas de sortie ... quel est l'échec? – BeemerGuy
'se débarrasser' pourrait être n'importe quel texte non-encadré, disons "texte bla bla bla texte bla [link1] bla bla [linktextofanysort2] texte bla bla". Tout plus clair maintenant? - J'ai modifié la question originale, voir ci-dessus: ... – ajo