OVH Cloud OVH Cloud

probleme de remplacement de balise...

4 réponses
Avatar
marcpirat
salut je tente de remplacer la balise code dans un champ texte avant
d'inserer dans la bd

je fais présentement:


Code:


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



$_POST["texttutoriel"] étant du texte....


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....

ça devrait seulement convertir ce qui est entre les tag
<code></code>...

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

comment resoudre ca?

merci

4 réponses

Avatar
Olivier Miakinen

salut je tente de remplacer la balise code dans un champ texte avant
d'inserer dans la bd

[...]

$str = preg_replace_callback('`&lt;(code|url|img)&gt;(.+?)&lt;/1&gt;`si',
'bbcode', htmlentities($str));

[...]

function bbcode($m) {
switch($m[1]) {
// balise case 'code' :
return '<div class="code"><pre>'.$m[2].'</pre></div>';


Je ne comprends pas pourquoi tu utilises /&lt;/ et /&gt;/ dans
l'expression rationnelle mais /</ et />/ dans la fonction de callback.
Tu as quoi exactement dans le texte à convertir ?

Avatar
marcpirat
Olivier Miakinen <om+ wrote in message news:<ci6cfk$u7f$...

salut je tente de remplacer la balise code dans un champ texte avant
d'inserer dans la bd

[...]

$str = preg_replace_callback('`&lt;(code|url|img)&gt;(.+?)&lt;/1&gt;`si',
'bbcode', htmlentities($str));

[...]

function bbcode($m) {
switch($m[1]) {
// balise case 'code' :
return '<div class="code"><pre>'.$m[2].'</pre></div>';


Je ne comprends pas pourquoi tu utilises /&lt;/ et /&gt;/ dans
l'expression rationnelle mais /</ et />/ dans la fonction de callback.
Tu as quoi exactement dans le texte à convertir ?



le texte peut être n'importe quoi... c'est code dans un forum... on
sait pas ce qu'un usager va tapé... mais s'il entre certaine balise...
je veux pouvoir agir sur ces balises...


Avatar
Olivier Miakinen

Je ne comprends pas pourquoi tu utilises /&lt;/ et /&gt;/ dans
l'expression rationnelle mais /</ et />/ dans la fonction de callback.
Tu as quoi exactement dans le texte à convertir ?


le texte peut être n'importe quoi... c'est code dans un forum... on
sait pas ce qu'un usager va tapé... mais s'il entre certaine balise...
je veux pouvoir agir sur ces balises...


Admettons. Donc si l'utilisateur tape &lt;code&gt; tu vas le remplacer
par <div> mais s'il tape <code> tu ne fais rien. C'est bien cela ? Ou
alors, tu as une première passe qui remplace tous les < par des &lt; et
tous les > par des &gt;, ce qui fait que s'il tape <code> cela deviendra
<div> mais s'il tape <br> cela deviendra &lt;br&gt;. N'est-ce pas ?


Avatar
marcpirat
Olivier Miakinen <om+ wrote in message news:<ci9bon$tpe$...

Je ne comprends pas pourquoi tu utilises /&lt;/ et /&gt;/ dans
l'expression rationnelle mais /</ et />/ dans la fonction de callback.
Tu as quoi exactement dans le texte à convertir ?


le texte peut être n'importe quoi... c'est code dans un forum... on
sait pas ce qu'un usager va tapé... mais s'il entre certaine balise...
je veux pouvoir agir sur ces balises...


Admettons. Donc si l'utilisateur tape &lt;code&gt; tu vas le remplacer
par <div> mais s'il tape <code> tu ne fais rien. C'est bien cela ? Ou
alors, tu as une première passe qui remplace tous les < par des &lt; et
tous les > par des &gt;, ce qui fait que s'il tape <code> cela deviendra
<div> mais s'il tape <br> cela deviendra &lt;br&gt;. N'est-ce pas ?


<code>
echo'<div id="main">';
echo'<form id="rechercheforum" action="resultat" method="post">';
</code>

je veux faire en sorte que le code soit pas interprété...

<div class="code"><pre>
...
...
</pre></div>