La communauté ALL HTML c'est 58491 membres à ce jour dont 0 inscrits aujourd'hui et 30 depuis une semaine.

  • imprimer
  • aide

Forum de discussions « PHP - SQL »

Retrouvez les publications relatives à ces discussions dans nos rubriques PHP, SQL.

nos amies les ereg...

liste des forums liste des discussions Participer à la discussion

Photo de rekam Message publié le mercredi 16 juillet 2008 à 10 h 54 par rekam.
Bonjour,

le plus difficile avec les expressions régulières, c'est de trouver un titre pour les post dans les forums qui soit pas trop long. Là, comme souvent, je sèche et le titre n'est pas très pertinent, vous m'en excuserez (ou non, après tout c'est égal ^^)

Bref, cela dit, j'essaie de faire un truc en principe tout bête. J'ai une variable remplie de texte html, par exemple ceci:

<strong>alors voilà</strong>
<p>un paragraghe avec un lien <a href="{link}8{/link}">ici</a> et surtout un autre <a href="{link}5{/link}">là</a> sur la même ligne.</p>


Je voudrais sur cette base extraire tous les {link}xxx{/link} et les remplacer par autre chose que je vais chercher dans la BD. J'ai donc, empli de mon entrain habituel, tenté avec une joie immense d'écrire moi-même l'expression régulière. Je me suis même surpris à penser que j'allais y arriver... C'est toujours le retour à la réalité qui est difficile...

Voilà mon cheni:

preg_match_all("/(\{link\})(.*)(\{\/link\})/", $content, $matches, PREG_SET_ORDER);
if ($matches) {
foreach ($matches as $match) {
echo "super, voila l'item: ".$match[0]." et le chiffre: ".$match[2]."<br/>";
}
}

Et donc ça fonctionne dans tous les cas, SAUF... si j'ai 2 liens sur la même ligne. S'il y a un retour de ligne qui les sépare, alors c'est tout bon. Comment faire pour cette expression fonctionne en toutes circonstances????

merci d'avance
rekam
Photo de telnes Message publié le mercredi 16 juillet 2008 à 11 h 46 par telnes. toujours revenir au debut - http://telnesmaster.free.fr/allhtml/index2.html - http://telnesmaster.free.fr/litetemplate - http://www.hotcontest.org
hello

et avec une patern comme ca

{link}[0-9]{1,}{\/link}
preg_match_all("/{link}([0-9]{1,}){\/link}/", $content, $matches); print_r($matches);

++
Photo de carambarocaramel1 Message publié le jeudi 17 juillet 2008 à 00 h 41 par carambarocaramel1.
Utilise le pattern suivant :
'`\{url\}(.*?)\{/url\}`'

(j'utilise le ` backquote altGR 7 pour "entourer" le pattern)

Dans ton pattern l'erreur provient je pense des parenthèses qui séparent les {link} des {/link}.
"/(\{link\})(.*)(\{\/link\})/"

donc ça donne : function tags($strin) { $motif = array('`\{url\}(.*?)\{/url\}`'); $sortie = array('<a href="$1" target="_blank">$1</a>'); return preg_replace($motif, $sortie, $strin); }
Photo de rekam Message publié le vendredi 18 juillet 2008 à 00 h 51 par rekam.
@carambarocaramel1 : impec, merci beaucoup, c'est fou, je comprendrai jamais rien à ce binz d'ereg... m'enfin si ne pas avoir les parenthèses fait fonctionner l'affaire, je prends ^^

@telnes : merci aussi. J'avais opté pour cette solution, mais elle ne fonctionne pas dans tous les cas, car j'ai parfois des "{link}item=truc id=2 bidule=machin{/link}", ce qui fait que de restreindre aux chiffres ne couvrent pas les cas spéciaux.

merci!
rekam
Photo de telnes Message publié le vendredi 18 juillet 2008 à 10 h 19 par telnes. toujours revenir au debut - http://telnesmaster.free.fr/allhtml/index2.html - http://telnesmaster.free.fr/litetemplate - http://www.hotcontest.org
je demande une rekam(ation) !!

nan mais

^^

liste des forums liste des discussions Participer à la discussion

Vous devez obligatoirement vous identifier en tant que membre pour participer à cette discussion.

ACCÉS COMMUNAUTÉ

Rejoignez ALL HTML

Publiez vos articles, actualités, communiqués ... Donnez votre avis, partagez votre réseau, rencontrez d'autres membres et participez à la vie de la communauté.

Les 5 dernières discussions