Page 1 sur 1

solution simple pour supprimer un morceau de chaine

Posté : 22 avr. 2008, 20:42
par VaN
Bonjour,

j'ai une chaine de caractère de cette forme :

Code : Tout sélectionner

Message de taille aléatoire <div style="border-left: 3px solid #8abad6; padding-left: 5px; font-style: italic">[email protected] a &eacute;crit :<br /><br /> message de taille aléatoire</div>
Et je souhaiterai pouvoir supprimer de cette chaine la seconde partie, c'est à dire à partir du <div>, jusqu'a à la fin.

Quelle est la meilleure méthode pour faire cela ?

Re: solution simple pour supprimer un morceau de chaine

Posté : 22 avr. 2008, 21:04
par dunbar
Bonjour,

j'ai une chaine de caractère de cette forme :

Code : Tout sélectionner

Message de taille aléatoire <div style="border-left: 3px solid #8abad6; padding-left: 5px; font-style: italic">[email protected] a &eacute;crit :<br /><br /> message de taille aléatoire</div>
Et je souhaiterai pouvoir supprimer de cette chaine la seconde partie, c'est à dire à partir du <div>, jusqu'a à la fin.

Quelle est la meilleure méthode pour faire cela ?
$string ='Message de taille aléatoire
<div style="border-left: 3px solid #8abad6; padding-left: 5px; font-style: italic">[email protected] a &eacute;crit :<br /><br />
message de taille aléatoire</div>';

echo preg_replace('#\{((?>[^{}]+)|(?R))*\}#', '', $string);
Affichera
Message de taille aléatoire
[email protected] a écrit :

message de taille aléatoire

Posté : 22 avr. 2008, 21:21
par VaN
Donc ça ne va pas, il faudrait que je garde seulement le premier message de taille aléatoire. Tout ce qui suit est en fait une citation d'un message précédent, que je ne souhaite pas enregistrer dans la base.

Posté : 22 avr. 2008, 23:06
par dunbar
Donc ça ne va pas, il faudrait que je garde seulement le premier message de taille aléatoire. Tout ce qui suit est en fait une citation d'un message précédent, que je ne souhaite pas enregistrer dans la base.
Comme ceci alors :?:
<?php
$inv= strrev('Message de taille aléatoire
<div style="border-left: 3px solid #8abad6; padding-left: 5px; font-style: italic">[email protected] a &eacute;crit :<br /><br />
message de taille aléatoire</div>');

$reste = strrchr($inv,">");

$rep =  strrev($reste);

echo $rep ;
?>
Mais je ne suis pas certain que cela soit la meilleur solution, mais elle fonctionne :wink:

Posté : 23 avr. 2008, 00:33
par VaN
A vue d'oeil, ne fonctionnera pas si le premier message aléatoire comporte des balises de mise en forme HTML (très probable qu'il comporte au moins des <br /> et des <strong></strong>) : /

Posté : 23 avr. 2008, 11:17
par Hywan
Bah utilises preg_match_replace() avec une bonne expression, et ça devrait vraiment suffir. Je ne vois pas où est le problème.

Si tu veux apprendre les expressions régulières : lumadis.be et expreg.com seront tes sites favoris.

Posté : 23 avr. 2008, 15:27
par dunbar
A vue d'oeil, ne fonctionnera pas si le premier message aléatoire comporte des balises de mise en forme HTML (très probable qu'il comporte au moins des <br /> et des <strong></strong>) : /
Oui je sais mais sa demande ne parle que d'un message avant le <div........ donc dans ce cas là (c'est la demande)cela fonctionne.
Maintenant oui peut-être que :?: , probablement que :?: etc.... on imagine tout ce que l'on veut mais pour sa question la solution fonctionne