Formation par Olivier Duffez

Formation au référencement par Olivier Duffez, créateur de WebRankInfo !
Une formule efficace alliant théorie et pratique, avec une haute disponibilité des intervenants
Cette formule a déjà convaincu plusieurs centaines d'entreprises, pourquoi pas vous ?
Réservez vite votre place en ligne (convention possible pour imputer sur le budget formation)

Formation référencement Marseille

Preg_replace un peu délicat !.. BESOIN D'AIDE SVP

Poster un nouveau sujet Imprimer cette discussion    Forum -> Développement d'un site Web   Les dernières discussions de ce forum sont disponibles au format RSS
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 
thierry8
WRInaute accro
WRInaute accro

Inscrit le: 11 Juil 2005
Messages: 3252

URL permanente de ce messagePosté le : Ven Mai 19, 2006 22:22    Sujet du message: Preg_replace un peu délicat !.. BESOIN D'AIDE SVP

Voila je présent tout d'abord mon problème.

=>
J'ai un texte entre deux balises personnalisée, que je souhaite bien entendu en forme. Un exemple sera plus compréhensible:
[BALISE=1]mon texte[/BALISE]
=
<span id="1">mon texte</span>

=>
Pour ce cas je n'ai pas de problème en faisant ainsi:
preg_replace('`\[BALISE=([0-9]+)\](.+)\[/BALISE\]`is', '<span id="$1">$2</span>', $texte)

=>
En revanche lorsqu'il y en a un dans un autre, j'ai un problème, exemple:
[BALISE=1]mon texte[BALISE=2]mon texte[/BALISE]mon texte[/BALISE]
=
<span id="1">mon texte[BALISE=2]mon texte</span>mon texte[/BALISE]
(la première balise correspond au rouge et se ferme avec la balise orange, cela ne coincïde pas)

Or je souhaiterai ce résultat:
<span id="1">mon texte<span id="2">mon texte</span>mon texte</span>


J'espère que quelqu'un voudra bien m'aider, car j'ai vraiment beaucoup de difficulté sur ce point, et je ne sais absolument pas comment faire.
Merci.
 
thierry8 Visiter le site web du posteur
SuperPJ
WRInaute passionné
WRInaute passionné

Inscrit le: 15 Jan 2005
Messages: 513
Localisation: Paris, France

URL permanente de ce messagePosté le : Sam Mai 20, 2006 0:22    Sujet du message: Re: Preg_replace un peu délicat !.. BESOIN D'AIDE SVP

Avec des balises personnalisées qui s'encastrent c'est compliqué de le faire en une seule expression régulière ... personnellement voici ce que je ferais (je ne sais pas si ça te conviendra mais bon c'est déjà ça Wink ):
Code:
<?

$texte = '[BALISE=1]mon texte[BALISE=2]mon texte[/BALISE]mon texte[/BALISE]';

$chercher = array
(
   '!\[BALISE=(\d+)\]!is',
   '!\[/BALISE\]!is',
);

$remplacer = array
(
   '<span id="\1">',
   '</span>',
);

$texte = preg_replace( $chercher, $remplacer, $texte );

echo $texte;

// <span id="1">mon texte<span id="2">mon texte</span>mon texte</span>

?>
 
SuperPJ Visiter le site web du posteur
Jul-Wup
WRInaute discret
WRInaute discret

Inscrit le: 13 Déc 2005
Messages: 96

URL permanente de ce messagePosté le : Sam Mai 20, 2006 15:29    Sujet du message: Preg_replace un peu délicat !.. BESOIN D'AIDE SVP

Un bon test à faire, c'est avec
$texte = '[BALISE=1]mon texte[BALISE=2]mon texte[/BALISE][BALISE=3]mon textemon texte[/BALISE]';

Et là, ça remplace [BALISE=3] par le span associé. Ce qui pose des problèmes avec les tableaux, bold etc... pour la mise en page.
 
Jul-Wup Visiter le site web du posteur
thierry8
WRInaute accro
WRInaute accro

Inscrit le: 11 Juil 2005
Messages: 3252

URL permanente de ce messagePosté le : Sam Mai 20, 2006 18:20    Sujet du message: Preg_replace un peu délicat !.. BESOIN D'AIDE SVP

Jul-Wup a écrit:
Un bon test à faire, c'est avec
$texte = '[BALISE=1]mon texte[BALISE=2]mon texte[/BALISE][BALISE=3]mon textemon texte[/BALISE]';

Et là, ça remplace [BALISE=3] par le span associé. Ce qui pose des problèmes avec les tableaux, bold etc... pour la mise en page.

Oui en effet, merci SuperPJ mais cette solution ne fonctionne pas pour la raison citée ci-dessus et pour d'autres encore...

Si quelque avait encore une idée..... Sad
 
thierry8 Visiter le site web du posteur
lefou
WRInaute occasionnel
WRInaute occasionnel

Inscrit le: 07 Juin 2005
Messages: 113

URL permanente de ce messagePosté le : Ven Juin 09, 2006 13:36    Sujet du message: Preg_replace un peu délicat !.. BESOIN D'AIDE SVP

En espérant que cela puisse t'aider :
Citation:
$texte=preg_replace("/\[BALISE=([0-9]+)\]/i","<balise id=\\1>",$texte);
$texte=preg_replace("/\[/BALISE\]/i","</balise>",$texte);

En fait je traîte la balise ouvrante et la balise fermante séparément.

Ceci va bien pour l'affichage mais pose problème pour la création d'un nouveau texte. En effet, en supposant que [BALISE]texte[/BALISE] met le texte en gras, cela fonctionnera aussi si on n'a que [BALISE]texte (car le formatage aura lieu). Le truc est donc de tester au moment de l'enregistrement du texte s'il y a autant de balises [BALISE] que de balises [/BALISE] avec affichage d'un message d'erreur si ce n'est pas le cas (utilisation de la fonction substr_count pour chercher le nombre d'occurances dans le texte).
 
lefou Visiter le site web du posteur
 
Montrer les messages depuis:   
Revenir en haut    Forum -> Développement d'un site Web Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 1 - 
Connexion
Nom d'utilisateur:    Mot de passe:      Se connecter automatiquement à chaque visite    

Autres sujets de discussion :

CLIQUEZ ICI pour vous inscrire à WebRankInfo (forum, annuaire, outils...)

Connexion

© 2001-2005 phpBB Group, support français
Personnalisation : WebRankInfo ™


 ODP  Firefox  Alsacreations  annuaire webmaster Yagoort