[PHP] Problème avec script

WRInaute occasionnel
Bonjour à tous,

je suis en train de faire un forum pour mon site, et j'ai inclu des citations de ce style la :

[.quote="nico"]Ceci est un petit test[/quote.]

et j'aimerais bien le transformer via php en çà :

<div style='...'><span style='...'>nico :</span>
Ceci est un petit test
</div>

Mais je n'arrive à extraire l'auteur (nico) et le message ("ceci est un petit test") de la chaine...

Merci du coup de pouce :roll:
 
WRInaute occasionnel
Je ne sais pas, jamais utiliser PhpBB.
le message est enregistré comme ceci :

mysql_real_escape_string($_POST['message']);
 
WRInaute discret
Code:
$tonmessage = '[quote="nico"]Ceci est un petit test[/quote]';
ereg("\[quote=\"([^\"]+)\"\](.+)\[/quote\]$", $tonmessage, $args);
$args[1] == "nico"
$args[2] == "Ceci est un petit test"

Si je n'ai pas fait d'erreur ;)
 
WRInaute discret
J'ai pensé qu'il n'y avait qu'une quote, et que c'était dans une colonne spéciale ou tu stockais le quote.

Sinon j'aurais fait comme Leonick le précise, ce qui donne :
Code:
ereg("\[quote=\"([^\"]+)\"\]([^\[]+)\[/quote\]", $tonmessage, $args);
 
WRInaute occasionnel
Merci, cela marche, mais je ne sais pas si la façon dont j'implémente mes citations est correcte.

Dans ma BD, je stocke tous dans un seul champ, je ne sépare donc pas le message et les citations. D'ailleurs, je crois que je ne pourrais pas faire de citations imbriquées ?


Et encore un chtite question (j'aime pô les regexp !) : comment remplacer mes quotes par mon div fraichement créé (je n'arrive pas à delimiter les balises QUOTE) ?

Code:
functon replace_quote($str)
{
	ereg("\[quote=\"([^\"]+)\"\]([^\[]+)\[/quote\]", $str, $args);
	$new_div = "<div>".args[1]." a dit :<br />".$args[2]."</div>";	
	
	$str = str_replace(...) // Comment remplacer les balises QUOTES ?

	return $str;
}
 
WRInaute discret
Non ta façon est correcte, mais j'ai vu quelques trucs farfelus sur le forum, alors je me suis dit que j'étais peut-être en train d'en voir une de plus =')

Je ne comprends pas ta question, ni ce que tu as besoin de remplacer.
Tu as déjà ton message (de la quote) supprimé de toutes balises. Donc tu peux faire ensuite <quote>$message_du_quote</quote> par exemple.
 
WRInaute occasionnel
Il faut bien remplacer quelque part dans la string les balises QUOTES par des DIV (pour avoir une bordure et un style particulier, comme sur le forum PhpBB par exemple)

Le regexp que tu m'a donné me permets jsute d'extraire l'auteur et le message de la quote (dans le tableau $arg). Ensuite je dois normalement remplacer toutes la quote par mon div formaté (avec l'auteur et le texte) pour qu'il puisse être affiché...et ça je sais pas faire. j'espère être clair lol
 
WRInaute discret
Ah oué donc en fait ce que tu as demandé au début ne te sert à rien :p

C'est donc pour ça que je pensais que tu gérais tes quotes différemment.

Pour info la doc php donne :
Code:
echo $bodytag = str_replace("%body%", "black", "<body text='%body%'>");

Transposé à toi ça donne quelque chose du genre (pour une partie du replace) :
Code:
$msg = str_replace("[quote]", "<span style=\"bidule\">", $msg);
$msg = str_replace("[/quote]", "</span>", $msg);
 
Discussions similaires
Haut