Page 1 sur 1

Remplacer un caractère dans une chaine par une variable

Posté : 01 nov. 2010, 23:21
par Hélène
Bonjour,
Je cherche à faire la manipulation suivante: j'interroge une BDD pour ressortir le contenu d'un enregistrement.
Il s'agit d'une texte, composé d'en ensemble de titre et de textes sous la forme
<h2> (...) </h2>
<p> (...) </p>
J'aimerai maintenant pouvoir remplacer ces <h2> par quelque chose du genre
<h2 class='[b]element1[/b]'> (...) </h2>
<p> (...) </p>
<h2 class='[b]element2[/b]'> (...) </h2>
<p> (...) </p>
Je devine qu'il faut faire une boucle pour parcourir chaque h2 et le remplacer par un <h2 class='element$i'> et on incrémente $i=$i+1

Mais je n'y arrive pas. Si j'utilise ereg_replace ou plus exactement str_replace, la fonction me remplace tout avec la même valeur, sans faire de distinction entre les élements.

Merci pour votre aide

Re: Remplacer un caractère dans une chaine par une variable

Posté : 01 nov. 2010, 23:31
par stealth35
tu peux le faire en CSS ca

Re: Remplacer un caractère dans une chaine par une variable

Posté : 02 nov. 2010, 00:34
par Hélène
Bonsoir,
Euh.. pas vraiment. Je ne pense pas que les CSS puissent m'aider.

Je cherche à faire une boucle pour remplacer tous mes <h2> par un <h2 class="element_$i"> avec $i qui varie de 0 à x, x étant le nombre d’occurrences dans ma chaine de caractère.

Merci pour ta réponse

Re: Remplacer un caractère dans une chaine par une variable

Posté : 02 nov. 2010, 00:43
par stealth35
tu peux faire ca DOMDocument c'est fait pour manipuler le HTML

Re: Remplacer un caractère dans une chaine par une variable

Posté : 02 nov. 2010, 01:01
par Hélène
ah oui ? Pourrais tu être plus précis ? Je ne connais pas

Re: Remplacer un caractère dans une chaine par une variable

Posté : 02 nov. 2010, 01:25
par stealth35
ah oui ? Pourrais tu être plus précis ? Je ne connais pas
il faut creer un objet DOMDocument, tu charges ton html avec la methode loadHTML, apres il va falloir faire un requete xpath pourl es h2 c'est simple c'est //h2
ca va te rendre une liste de tout tes H2, il suffis de leur rajoute l'attribut class

(ca parait compliquer mais en 10 lignes c'est fais) :wink:

Re: Remplacer un caractère dans une chaine par une variable

Posté : 02 nov. 2010, 03:05
par Hélène
Merci. Concept un peu nouveau pour moi, je ne suis pas sur de bien comprendre.
Aurais-tu un exemple à me proposer ?

Re: Remplacer un caractère dans une chaine par une variable

Posté : 02 nov. 2010, 12:55
par stealth35
comment tu va créer tes classes CSS après ?

Re: Remplacer un caractère dans une chaine par une variable

Posté : 02 nov. 2010, 23:22
par Hélène
je voudrais avoir à la fin quelque chose comme
<h2 class="element1"> (...)</h2>
<p> (...) </p>
<h2 class="element2"> (...)</h2>
<p> (...) </p>
<h2 class="element3"> (...)</h2>
<p> (...) </p>
<h2 class="element4"> (...)</h2>
<p> (...) </p>
tu vois ? Car ainsi je pourrai appliquer un style CSS ainsi qu'une action Jquery dessus.
Pour l’instant je bataille juste avec le fait que je n'ai aucune indexation pour les h2.

Re: Remplacer un caractère dans une chaine par une variable

Posté : 02 nov. 2010, 23:56
par stealth35
pas besion non plus avec jquery tu peux aller cherche tout les H2, de plus c'est plutot l'id pour l'identifiant uniquement et class pour le style :wink:

Re: Remplacer un caractère dans une chaine par une variable

Posté : 03 nov. 2010, 00:07
par dunbar
Salut,

Simplement comme ceci peut-être ?
<?php
<?php
$donnee = array('<h2>(ceci est un test1)</h2>',
                '<h2>(ceci est un test2)</h2>',
                '<h2>(ceci est un test3)</h2>');


	foreach($donnee as $key => $row)
	{

		$element = 'element'.($key +1);

		echo $remplacement = str_replace('<h2>', '<h2 class="'.$element.'">', $row);
		echo '<p>(.....)</p>';
    }

?>
A+
PS : Ceci dis la solution est trés discutable :)

Re: Remplacer un caractère dans une chaine par une variable

Posté : 03 nov. 2010, 15:17
par Mazarini
bonjour

$t = explode('<h2>',$texte);
£i = 0;
$r = '',
foreach ($t as $s) {
£i++;
$r .= '<h2 classe="element'.$i.'>".$s;
}

Re: Remplacer un caractère dans une chaine par une variable

Posté : 12 nov. 2010, 04:51
par Hélène
BRAVO !!!
c'est exactement ça que je cherchais, merci beaucoup.