Besoin d'aide pour un remplacement de chaine par expression régulière. - PHP - Programmation
Marsh Posté le 17-01-2007 à 14:08:09
c'est quoi un motif pour toi ?
un exemple autre que "blablabla" serait plus parlant
tu connais les assertions sinon ?
Marsh Posté le 17-01-2007 à 14:14:09
Le motif? Pour moi c'est la masque de recherche que la fonction doit remplacer. pour le texte, j'ai mis un truc générique... Si je devais mettre quelque chose qui soit exactement ce que je cherche à faire ce serait dans ce genre là :
Code :
|
Marsh Posté le 18-01-2007 à 11:08:44
Avec des assertions ça va être compliqué...
Je vois 2 méthodes :
- tu fais une regexp qui cherche les morceaux qui ne sont pas entre tags, et tu fais ton replace sur ces morceaux (voir option e de recherche) => si n morceaux on aura donc n+1 preg_replace
- tu extraits les morceaux entre tags (tu les remplaces par un genre de flag), tu fais ton replace, tu replaces les morceaux => 3 preg_replace
Je pense que la 2ème méthode est moins gourmande, mais ça dépend aussi de la complexité de tes masques.
Marsh Posté le 18-01-2007 à 12:48:23
J'avais fait quelque chose comme ça (qui correspond à peu près à la seconde suggestion de soju). Y a peut-être (sûrement ?) plus efficace (style une regexp miracle), mais en attendant ça fonctionne.
Code :
|
À noter que ça ne prend pas en compte les params facultatifs de preg_replace, parce que j'en n'avais pas eu besoin. Mais ça doit pouvoir se faire.
Marsh Posté le 18-01-2007 à 13:52:31
ta solution de splitter le texte n'est pas bête du tout... j'avais réfléchi hier soir à une solution qui ressemblait à l'extraction de la partie à ne pas traiter suggérée par soju. je vais essayer les deux méthodes et voir laquelle est la plus performante! En tout cas, merci beaucoup à tous les deux pour vos conseils!
Marsh Posté le 18-01-2007 à 21:11:05
Code :
|
Qui donne comme résultat :
Code :
|
Il faut noter que ca vire les [ignore] mais il est pas bien dur de les conserver
Marsh Posté le 18-01-2007 à 21:24:56
Ah ben ouais.
C'est tellement con que je n'y avais pas pensé.
Marsh Posté le 17-01-2007 à 10:50:16
Bonjour,
Je sollicite votre aide, étant donné mon faible niveau en regexp. je dois faire un remplacement de chaine comme suit:
Le souci, c'est que dans le texte, je dois remplacer les motifs SAUF ceux se trouvant entre deux tags utilisant la mise en forme [tag]......[/tag].
j'ai fait quelques tests pour le motif, mais le problème, c'est que travaillant avec des tableaux, je ne vois pas comment spécifier qu'il ne faut rien remplacer entre les deux tags.
D'avance, merci de votre aide!