Communauté Informatique NDFR.net : bbcode - Programmation Web (HTML, PHP, ASP, Java, XML, etc.)
Reply
bbcode
Thread Tools Display Modes
  #1  
Old 15-09-2004, 04:51
os2 os2 is offline
Membre junior
 
Join Date: 15-09-2004
Posts: 2
bbcode

salut

je tente de faire parser du texte qu'un usager à entrer avant de l'insérer dans la bd...

Code:
$str = $_POST["texttutoriel"]; 
$str = preg_replace_callback('`<(code|url|img)>(.+?)</\1>`si', 'bbcode', htmlentities($str));
ensuite ma fonction bbcode

Code:
function bbcode($m) { 
    switch($m[1]) { 
        // balise         case 'code' : 
          return '<div class="code"><pre>'.$m[2].'</pre></div>'; 
        break; 
        // balise <url> 
        case 'url' : 
          if (preg_match ('`^http://`', $m[2])) 
            return '<a href="'.$m[2].'" class="machin">'.$m[2].'</a>'; 
          else 
            return '<a href="http://'.$m[2].'" class="machin">'.$m[2].'</a>'; 
        break; 
        // balsie <img> 
        case 'img' : 
        return '<img src="'.$m[2].'" alt="mon image"/>'; 
    } 
}
avec ce code je remplace certain tag....

le problème est que tout ce que contient $_POST["texttutoriel"] est convertit... ce qui devrait pas être le cas

si ça fonctionnerais, ça résoudrait mon problème d'une certain façon... ainsi l'usager n'aurait pas besoin de faire le travail lui même
Reply With Quote
  #2  
Old 15-09-2004, 07:50
Benjy's Avatar
Benjy Benjy is offline
Administrateur
 
Join Date: 21-08-2001
Location: Rueil Malmaison (92)
Age: 43
Posts: 2,043
Send a message via MSN to Benjy
Quote:
Originally Posted by os2
le problème est que tout ce que contient $_POST["texttutoriel"] est convertit... ce qui devrait pas être le cas

si ça fonctionnerais, ça résoudrait mon problème d'une certain façon... ainsi l'usager n'aurait pas besoin de faire le travail lui même
Moi y'en a pas comprendre quoi toi y'en a vouloir...
__________________
Merci de lire et de respecter les règles et d'utiliser la .
Reply With Quote
  #3  
Old 15-09-2004, 12:19
os2 os2 is offline
Membre junior
 
Join Date: 15-09-2004
Posts: 2
Quote:
Originally Posted by Benjy
Moi y'en a pas comprendre quoi toi y'en a vouloir...
tu parles et écrit en francais?



le texte entré par l'usager donc $_POST["texttutoriel"]; qui est mis dans str....

contient n'importe quoi....
par exemple:

<h1>il fait froid</h1>,
<code>
allo
</code>

après passage dans la fonction, tout est convertit en caractère xhtml....

on aurait donc...

&lt;il fait froid&gt;....

ce que je désire pas...

je veux juste remplacer que les balises que j'ai spécifié
Reply With Quote
  #4  
Old 15-09-2004, 14:10
Spycam's Avatar
Spycam Spycam is offline
Spectre de ces lieux
 
Join Date: 25-10-2002
Location: France
Age: 36
Posts: 1,075
Ouch.
J'aurais plutot recherché où sont les balises <code> </code> etc, puis traduit son contenu.
Parce que là çà va être galère pour que les deux fonctions se parlent.
Reply With Quote
  #5  
Old 15-09-2004, 14:27
Benjy's Avatar
Benjy Benjy is offline
Administrateur
 
Join Date: 21-08-2001
Location: Rueil Malmaison (92)
Age: 43
Posts: 2,043
Send a message via MSN to Benjy
Quote:
Originally Posted by os2
tu parles et écrit en francais?
Mieux que certains, mais ton premier message était tellement clair...
Quote:
Originally Posted by Spycam
Ouch.
J'aurais plutot recherché où sont les balises <code> </code> etc, puis traduit son contenu.
Parce que là çà va être galère pour que les deux fonctions se parlent.
Et puis généralement on utilise des crochets, justement pour que ce soit plus facile à détecter...
Mais bon je dis ça, je dis rien (© Cougar).
__________________
Merci de lire et de respecter les règles et d'utiliser la .
Reply With Quote
  #6  
Old 15-09-2004, 14:38
fonji fonji is offline
Membre senior
 
Join Date: 01-07-2003
Age: 38
Posts: 1,627
Le problème c'est que la fonction htmlentities($str) remplace TOUS les caractères risquant de poser problème en html (<,>, é, à, ...) et comme tu l'appelles sur toute ta chaîne de caractère, elle va être entièrement modifiée...
Tu crois pas qu'un str_replace serait plus utile ?
Bon, c'est vrai qu'après c'est pas évident pour trouver les url, mais c'est faisable, à la limite avec des substrings....
En tous cas amuse-toi bien, j'édite si je trouve une meilleure idée...

EDIT : voilà une idée à étudier :
Faire un preg_replace() sans appeler ton htmlentities, celui là tu le feras dans la boucle uniquement en cas de code :
Code:
case 'code' : 
    return '<div class="code"><pre>'.htmlentities($m[2]).'</pre></div>'; 
break;
Comme ça ben les balises html du code seront visibles et pas interprétées, les autres modifieront la mise en page.

Sinon ben tu t'amuses avec des str_replace... Mais en fait c'est pas pratique...

Last edited by fonji; 15-09-2004 at 14:48.
Reply With Quote
Reply

Bookmarks


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
probleme preg_replace Magi-X Programmation Web (HTML, PHP, ASP, Java, XML, etc.) 1 16-04-2004 15:09
BBcode PHP Magi-X Programmation Web (HTML, PHP, ASP, Java, XML, etc.) 4 16-04-2004 10:53
Zoom PHP Anonymous_jm Programmation Web (HTML, PHP, ASP, Java, XML, etc.) 18 06-03-2004 06:43
eregi_replace Magi-X Programmation Web (HTML, PHP, ASP, Java, XML, etc.) 26 17-06-2003 18:36
Mise a jour de phpBB nonoleptitmalin Discussions 7 20-02-2003 08:16

All times are GMT +2. The time now is 21:04.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.