Page 1 sur 1

modifier dernière occurence trouvée dans un texte

Posté : 08 janv. 2010, 16:13
par seg
Bonjour à tous,

Voici mon problème, j'ai un texte et dans ce texte j'ai des balises <br>. Je souhaiterai supprimer le dernier <br> du texte qui me pose des problèmes.
Le strreplace ne me permet pas de changer la dernière occurence de br trouvée et le strrpos me permet seulement de ressortir la position. Je ne vois pas comment modifier seulement ça dans mon texte en ayant la position.
Quelqu'un a une idée ?

Merci par avance pour vos réponses :D

Re: modifier dernière occurence trouvée dans un texte

Posté : 08 janv. 2010, 16:17
par Sodams
Vu que tu connais la position du dernier br, tu peux faire

substr(partie avant le dernier br) + substr(partie après le dernier br)

Re: modifier dernière occurence trouvée dans un texte

Posté : 08 janv. 2010, 16:48
par seg
ah oui très bonne idée, j'y avais pas pensé.
Merci beaucoup

Re: modifier dernière occurence trouvée dans un texte

Posté : 08 janv. 2010, 16:53
par Aureusms
Hmmm j'ai une idée saugrenue qui me vient...
Si j'ai bien compris ton <br> est à la fin du texte : tu te sers de explode() pour couper ta chaine en tableau et tu enlèves (avec le paramètres -1) la dernière occurence (qui est vide) et tu recréés ton texte sans le denier <br>
<?php
//si <br> à la fin du texte
$tab_texte = explode ("<br>",$texte,-1);
$texte = implode ("<br />",$tab_texte);
?>
Si tu veux le dernier <br> mais s'il n'est pas en fin de texte : tu fais la même manip mais tu rajoutes la dernière occurrence du tableau avec un espace
<?php
//si le dernier <br> mais pas à la fin du texte
$tab_texte_0 = explode ("<br>",$texte);
$tab_texte_1 = explode ("<br>",$texte,-1);
$dernier_occurence = count($tab_texte_1);
$texte = implode ("<br />",$tab_texte_1)." ".$tab_texte_0[$dernier_occurence];
?>

Re: modifier dernière occurence trouvée dans un texte

Posté : 09 janv. 2010, 14:29
par florinn
Voici un exemple avec des expressions régulières:

$text = 'Lorem ipsum dolor sit amet, <br>
consectetur adipisicing elit<br>
sed do eiusmod tempor incididunt<br>';
$text = preg_replace('|<br>$|', '', $text);