php texte bbcode et html - PHP - Programmation
Marsh Posté le 17-02-2006 à 14:37:12
Lis la doc, cherche sur le forum ça a déjà été demandé.....
Imaginons que la chaîne saisie par l'utilisateur est dans $var.
Pour l'afficher, au lieu de faire :
echo $var;
tu fais :
echo nl2br($var);
C'EST POURTANT PAS COMPLIQUÉ!!!
Marsh Posté le 17-02-2006 à 14:58:53
ok , merci compris et ca fonctionne , par contre pour la deuxieme partie qui est de l'activation/authorisation de certain bbcode pour un privilegeX qui donne droit a ces bbcode?
Marsh Posté le 17-02-2006 à 15:00:55
je sais pas...
...essais ça peut être :
echo bbcode2html($var);
Marsh Posté le 18-02-2006 à 00:41:26
ca ne fonctionne pas , et puis en faisant ca , tout les internautes auront droit aux bbcode non? je pensais a faire un champ ' privilege' avec dedans oui/non , et qu'il y ai verification si l'utilisateur est 'oui' , si il est oui le bbcode fonctionne , si non les bbcode ne vont pas , est ce possible?et comment?
merci
Marsh Posté le 18-02-2006 à 01:25:21
tu crées une classe qui gère les bbcode et qui test les expressions régulières en fonctions du level de la personne.
tu fais genre :
function defaultBBCode() { }
function adminBBCode() { }
et dans l'appel général genre :
function genererBBCode() { } tu test la valeur de privilige que t'auras passé en paramètre à l'objet pour savoir si c un user normal ou admin.
Marsh Posté le 18-02-2006 à 01:44:40
rut a écrit : ca ne fonctionne pas , et puis en faisant ca , tout les internautes auront droit aux bbcode non? je pensais a faire un champ ' privilege' avec dedans oui/non , et qu'il y ai verification si l'utilisateur est 'oui' , si il est oui le bbcode fonctionne , si non les bbcode ne vont pas , est ce possible?et comment? |
Désolé je suis pas sympa... Ca ne risquait pas de marcher parce que ce n'est pas une fonction qui existe sauf si bien sur tu la créée toi même ou avec je ne sais quelle extension, objet, class et tout le tralalala... Bref si tu veux intégrer l'interprétation du bbcode dans tes pages, c'est regex & co. Ensuite pour la méthode, ba... classe, fonction, etc... Je te laisse te reporter à la méthode ci-dessus.
Marsh Posté le 18-02-2006 à 11:08:28
dwogsi a écrit : ce n'est pas une fonction qui existe |
Remarque, ca viendra peut-être un jour
Marsh Posté le 21-02-2006 à 17:42:01
voila , je me demandais apres mur reflection si c'etait pas possible de faire quelque chose ainsi , a la lecture de la donner
$info= tout ce que l'user a mis dans sa description
<?php
$line = $_GET['id'];
if( $line['privilege']== "oui" || $line['privilege']== "oui" )
{
echo untruk $info
}
else
{
echo $info
}
?>
ainsi c'est bien ce que je veux, un user qui va voir la description d'un autre, si l'user qui a la description est membre special , les autres et lui pourront lire les bbcodes sur la description d'un membre et que d'un membre, si il n'est pas , les bbcodes ne fonctionnerons pas , est ce que je dis juste?
alors il y a le "untruk" , je veux dire par la quelque chose comme "nl2br" qui met les<br/> , mais que ici jouerai un role sur l'activation des bbcodes , est ce que c'est toujour possible?
je ne vois pas bien comment faire avec ceci dit plus haut
"function defaultBBCode() { }
function adminBBCode() { }
et dans l'appel général genre :
function genererBBCode() { }
"
merci a tous pour vos conseils/reponses
Marsh Posté le 21-02-2006 à 19:41:15
erel69 a écrit : Remarque, ca viendra peut-être un jour |
Ca existe déjà dans PEAR il me semble, même si je l'ai jamais essayer.
Marsh Posté le 21-02-2006 à 20:15:41
rut a écrit : |
ya que moi qui voit 2 fois la meme chose ?
Marsh Posté le 21-02-2006 à 20:47:00
non sorry
<?php
$line = $_GET['id'];
if( $line['privilege']== "oui" )
{
echo untruk $info
}
else
{
echo $info
}
?>
vous avez des idees en partant de ce principe?
Marsh Posté le 21-02-2006 à 23:28:42
voila j'ai travailler sur cette idee 3heure non stop , j'obtien quelque chose du style:
j'ai sur la page qui voit la description ceci:
<?php
$line = $_GET['id'];
if( $line['privilege']== "admin" )
{
adminBBcode()
}
elseif($line['privilege']=="default" )
{
defaultBBcode()
}
$line = $_GET['id'];
$req = "SELECT description FROM utilisateur WHERE id_user=$line";
$ret = mysql_query ($req) or die (mysql_error ());
while ( $col = mysql_fetch_row ($ret) )
{
function defaultBBCode() {
$col[0] = preg_replace('#\[ b](.+?)\[ /b]#si','[ b]$1[ /b]',$col[0]);
$col[0] = preg_replace('#\[ i](.+?)\[ /i]#si','[ i]$1[ /i]',$col[0]);
}
function adminBBCode() {
$col[0] = preg_replace('#\[ b](.+?)\[ /b]#si','< strong>$1</ strong>',$col[0]);
$col[0] = preg_replace('#\[ i](.+?)\[ /i]#si','< em>$1</ em>',$col[0]);
}
echo nl2br ".$col[0].";
}
?>
j'espere que ca pourrait donné quelque chose, vous en penser quoi?
quand c'est default j'ai mis que [b] devient [b] etc
quand c'est admin j'ai mis que [b] (que l'user met en desciption) devient <b> ainsi son texte devien en gras contrairement a l'autre qui affifera [b] donc les BBcode ne fonctionnerons pas
merci de votre soutient
Marsh Posté le 21-02-2006 à 23:30:35
Plus qu'à définir untruk
Remarque, deux secondes de recherche sur google et tu as au moins un début de script pour les balises les plus courantes //edit, oh ben tiens, y en avait même un dans les commentaires de la doc, d'exemple
En passant, supposons un gars qui n'a pas les privilèges requis, tu vas lui afficher quoi ? [ b]blablabla[ /b] ou juste blablabla ? Parce que le premier cas, c'est pas le top en terme de lisibilité
Marsh Posté le 21-02-2006 à 23:33:49
je desirerai afficher le meme texte qu'il a mis , mais sans les bbcode, donc si il a mis blablabla mais entre [b] afin que se soit en gras, que ca affiche le blablabla mais donc plus en gras, mais j'ai poster un message en meme temp que toi , je pense que le petit script que j'ai fait peux donner quelque chose de meilleur
Marsh Posté le 21-02-2006 à 23:39:03
Oui, enfin, ta fonction defaultBBCode, elle sert strictement à rien, à part ralentir le script, le masque et la chaine de remplacement étant identique
Marsh Posté le 21-02-2006 à 23:50:56
c'etait le but de faire la chaine de remplacement identique mais c'est vrai je n'ai pas pensez que ca devenait inutile , donc je peux laisser entre les accolade pour la fonction defaultBBcode un vide autrement dit rien ?
est ce que mon code fonctionnerai? car je n'ai pas la possibilité de le tester ce soir?
je me demandai , lorsque je mets ceci sur ma page de description : < b> coucou </ b> je vois le coucou en gras , mais biensur ca je ne le veux pas car les non admin mettrai sous cette forme et aurai leur texte en gras par exemple, alors je me pose la question , soit il existe quelque chose pour empecher ce format , mais je ne pense pas , ou alors faire quelque chose ainsi:
$col[0] = preg_replace('#\ < b>(.+?)\< /b>#si','[ b]$1[/b]',$col[0]);
donc sometoute juste le contraire , que je plasserai dans function adminBBcode et function defaultBBcode
qu'en penses tu ou qu'en pensez vous?
Marsh Posté le 22-02-2006 à 11:59:32
naceroth a écrit : Ca existe déjà dans PEAR il me semble, même si je l'ai jamais essayer. |
Dites moi que c'est pas vrai!!!!
Et dire que je me suis fait chier à coder une fonction pour interprêter de le BBCode...
Bon ba je vais aller chercher une corde et... enfin vous savez.
Marsh Posté le 22-02-2006 à 16:20:32
dwogsi a écrit : Dites moi que c'est pas vrai!!!! |
De mémoire, y en a même 2, la version de PEAR (HTML_BBCodeParser je crois) et un UBBCode chez phpclasses.org.
Mais comme toi, je me suis fait chier à intégrer une fonction perso pour ça
Marsh Posté le 22-02-2006 à 16:32:27
rut a écrit : je me demandai , lorsque je mets ceci sur ma page de description : < b> coucou </ b> je vois le coucou en gras , mais biensur ca je ne le veux pas car les non admin mettrai sous cette forme et aurai leur texte en gras par exemple, alors je me pose la question , soit il existe quelque chose pour empecher ce format , mais je ne pense pas |
htmlentities : http://fr2.php.net/manual/fr/function.htmlentities.php
strip_tags : http://fr2.php.net/manual/fr/function.strip-tags.php
Marsh Posté le 22-02-2006 à 17:19:33
voila j'ai ceci maintenant:
<?php
$line = $_GET['id'];
if( $line['vip']== "oui" )
{
adminBBcode() ;
}
else if($line['vip']=="non" )
{
defaultBBcode() ;
}
$line = $_GET['id'];
$req = "SELECT description FROM utilisateurs WHERE id_user=$line";
$ret = mysql_query ($req) or die (mysql_error ());
while ( $col = mysql_fetch_row ($ret) )
{
function defaultBBCode() {
$col[0] = preg_replace('#\(.+?)\#si','$1',$col[0]);
$col[0] = preg_replace('#\(.+?)\#si','$1',$col[0]);
}
function adminBBCode() {
$col[0] = preg_replace('#\(.+?)\#si','<b>$1</b>',$col[0]);
$col[0] = preg_replace('#\(.+?)\#si','<em>$1</em>',$col[0]);
}
echo nl2br (htmlentities($col[0] ));
}
?>
je teste , et le [b] n'est pas remplacer par<b> lorsque le membres est oui , et aussi avec le htmlentities si on encode <b>< /b> ca ne devient pas en gras comme souhaiter, que dois je faire pour que mon script fonctionne?
Marsh Posté le 22-02-2006 à 17:24:34
La lecture d'un bon tutoriel ne serait visiblement pas du superflux.
Pour que ton script fonctionne, il faut indiquer à ta fonction la valeur à utiliser. Là, tu ne lui indique rien.
De plus, en php, les variables sont interne à une fonction et ne sont pas partagé avec l'extérieur. les $col de tes fonctions n'ont donc rien à voir avec le $col qui est à l'extérieur des fonctions.
Pour plus de détail voir doc : http://fr2.php.net/manual/fr/language.functions.php
A noter qu'une fonction qu'elle se trouve au début du fichier, à la fin ou au milieu du code et même dans un fichier à l'autre bout du disque dur se comportera exactement de la même maniére. Pour faciliter la lecture du code, il est conseillé de toutes les mettre au début ou à la fin des fichiers et de mettre dans un autre fichier celles qui seront utilisé par plusieurs fichiers.
EDIT fausse manip au milieu de la saisie du texte.
Marsh Posté le 22-02-2006 à 19:08:56
en fait, t'es pas obligé d'appeler le defaultBBCode() . Quand je t'ai parlé de ca, je pensais que les utilisateurs normaux avaient le droit a quelques balises comme B ou I .
Marsh Posté le 22-02-2006 à 19:15:34
oui je m'aperçois aussi , parr contre je ne vois pas ce que je dois faire ( en rapport avec omega2)
Marsh Posté le 22-02-2006 à 19:26:11
déclare tes fonctions au début de ton fichier et appelle les genre adminBBCode($col)
Marsh Posté le 24-02-2006 à 14:55:31
mon probleme vien de la condition a mon avis , ceci est bien juste?:
<?php
$line = $_GET['id'];
if($line['vip']=="oui" )
{ ?>
<b>test-oui</b>
<?php
}
?>
et
<?php
$line = $_GET['id'];
if($line['vip']=="non" )
{ ?>
<b>test-non</b>
<?php
}
?>
quand je test , que se soit des utilisateurs qui sont oui ou non , ca n'affiche dans aucun cas soit test-oui ou test-non
pourquoi?
Marsh Posté le 24-02-2006 à 14:59:24
fait un "print_r" de $_GET et un "print_r" de $line.
Ca métonerait fort que la case $_GET['id']['vip'] existe.
Marsh Posté le 24-02-2006 à 15:28:26
donc la page est regarder.php?id=1
print_r($_GET) : Array ( [id] => 1 )
print_r($line) : 1
Marsh Posté le 25-02-2006 à 17:45:12
quelqu'un a une idée? , bon carnaval a tous aussi
edit : je viens de remarquer que si c'est regarder.php?id=23
ca me donne 2
?id=3837
ca me donne 3
Marsh Posté le 03-03-2006 à 09:37:37
rut a écrit : [...] |
$line prend la valeur de $_GET['id'], donc $line n'est pas un tableau.
Et tu test ensuite $line['vip']. Comment veux tu que ça marche?
Marsh Posté le 03-03-2006 à 17:22:04
je dois faire ceci alors ? :
<?php
$line = $_GET['id']['vip'];
if($line['vip']=="non" )
...
?>
ou bien ceci :
<?php
if( isset($_GET['id']) )
{
$vip = intval ($_GET['id']);
}
if($vip['vip']=="non" )
...
?>
Marsh Posté le 03-03-2006 à 17:24:23
Je crois que je n'ais peut être pas très bien suivit le fonctionnement de ton script...
Marsh Posté le 03-03-2006 à 18:30:37
dwogsi a écrit : Je crois que je n'ais peut être pas très bien suivit le fonctionnement de ton script... |
Je te rassure, visiblement, lui non plus
rut, on se tue à te dire que ton $_GET['id'] n'est pas un tableau, tu n'obtiendras jamais le résultat que tu recherches tant que tu essayeras de t'en servir comme quelque chose qu'il n'est pas.
Marsh Posté le 03-03-2006 à 18:59:00
ben là, tu récupères un id d'un utilisateur, je suppose que les privilèges dont il dispose sont stockés dans la bd ? Donc, ton traitement doit plus ressembler à (d'après le bout de code que tu mets plus haut)
Code :
|
Marsh Posté le 16-02-2006 à 20:39:55
bonsoir a tous ,
voila , j'ouvre se thread pour vous demander de l'aide. J'expose en quelques mots mon probleme, j'ai un site en php que en php avec mysql entre autre , et avec des sessions , chaque internaute a la possibilité de creer une description de soi personnel , il peut allez sur la page , ecrire et sauvegardez/envoyer ses données , qui ensuite s'affiche sur la page regarderuser.php?id=287... , mais le texte s'affiche sans retour a la ligne (= <br> ) ce qui est assez ennuyant , l'user s'il ecrit " slt , je m'appelle ralf <br> et je vien de france" affichera bien avec le retour a la ligne , mais je voudrais savoir comment faire pour que l'user ne doivent pas mettre le code <br>. cela doit venir du formulaire d'envoi et peut etre de celui qui affichera la donnee.
ensuite , certain internaute qui auront un certain privilege pourront mettre certain BBcode , telque noir,barre,souligner,italique... , je voulais savoir comment cela est possible que je code un tel script.
voici le script formulaire d'envoi de donnee sur la page : edit.php
<html> <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<?php if (isset($_GET['id_destinataire'])){ $valeur = $_GET['id_destinataire']; }else { $valeur = ''; }echo '<input type="hidden" name="id_destinataire" value='.$valeur.' />';?>
<input type="hidden" name="action" value="inserer" />
<p><textarea cols=60 rows=11 input type="text" name="message" /></textarea> </p>
<p><input type="submit" name="Submit" value="Envoyer" /></p>
</form> </html>
enfait ceci est celui du message , mais qui revien a quelque chose pret de la fiche descriptive de l'internaute
merci de pouvoir m'aidez sur ca