![]() |
bbcode
|
Thread Tools | Display Modes |
#1
|
|||
|
|||
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)); 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"/>'; } } 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 |
#2
|
||||
|
||||
Quote:
|
#3
|
|||
|
|||
Quote:
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... <il fait froid>.... ce que je désire pas... je veux juste remplacer que les balises que j'ai spécifié |
#4
|
||||
|
||||
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. |
#5
|
||||
|
||||
Quote:
Quote:
Mais bon je dis ça, je dis rien (© Cougar). |
#6
|
|||
|
|||
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; 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. |
![]() |
Bookmarks |
«
Previous Thread
|
Next Thread
»
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Display Modes | |
|
|
![]() |
||||
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 16:18.
Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.