Se connecter / S'enregistrer
Votre question

Code pour remplacer du texte par un autre.

Tags :
  • Logiciels
  • Programmation
Dernière réponse : dans Programmation
23 Juin 2006 14:55:39

Bonjour à tous !!

Je voudrai vous demander quelque chose d'un peu particulier... J'ai un site web parlant des loisirs en général. Ce site est nouveau et requiert la participation des visiteurs pour la création d'articles. C'est pourquoi je mat à leur disposition le logiciel de création de tutorials du site du zéro.

Maleureusement (et ils l'ont bien fait exprès je pense), ce logiciel génère des balises du type <gras> au lieu de <b> ou <souligne> au lieu de <u>. C'est pourquoi, lorsque quelqu'un m'envoie un article, je suis obligé de changer toutes les balises en "vraies" balises.

C'est là où je fait appel à vous : est-ce que quelqu'un aurait la gentillesse et le temps de me faire un petit programme (une simple console me suffirait) qui permettrait d'entrer un texte, puis d'effectuer les remplacements de chaines de texte de ce type :

les --> signifient "remplacer par"

<gras> --> <div class="gras">

</gras> --> </div>

...


Bien évidemment, le pseudo (ou le nom) du créateur du logiciel sera présent dans mon site avec un lien vers son site si il le souhaite.

Merci d'avance !!

PS : je sais que certains vont me dire de le faire moi-même. Je connaissais les bases du C++ mais je ne m'en souvient plus trop. C'est pourquoi, si le soft est fait en C++, merci faire les 2 seuls remplacements que je présente pour que je puisse continuer la source en mettant les autres remplacements à faire. :) 

Autres pages sur : code remplacer texte

23 Juin 2006 15:14:34

IL faut te servir de la fonction preg_match_replace() et analyser le contenu pour ensuite remplacer comme il faut.

C'est comme pour les BBcodes dont il y a d'ailleurs un script sympa sur lephpfacile.com, il te suffit de le modifier comme il faut et c'est bon.
23 Juin 2006 15:15:56

Merci mais cette fonction... C'est du php non ? Je n'aurai donc pas besoin de logiciel externe ?
Contenus similaires
23 Juin 2006 15:23:37

bien sur que non t'as pas besion de logiciel externe.
23 Juin 2006 15:24:54

Je suis nul en HTML et PHP mais tu ne pourrai pas simplement coller ton code dans le Bloc-Notes et utiliser la fonction "remplacer" pour ensuite reinsérer le code ? Ca me parait plus simple.
23 Juin 2006 15:25:10

Ok, merci.

Je m'y connais pas mal en (x)HTML et en CSS mais en PHP je suis une vraie quiche. Pourriez-vous m'aider à faire le script ?
23 Juin 2006 15:26:42

Skyline_GTR_R-34, plus simple à partir du moment où l'on a pas trop d'articles à modifier. Or, quand tu en a des dixaines par jour, c'est plus embétant... ;-)
23 Juin 2006 15:29:49

Citation :
Skyline_GTR_R-34, plus simple à partir du moment où l'on a pas trop d'articles à modifier. Or, quand tu en a des dixaines par jour, c'est plus embétant...

Ok, je vois ca. Dans ce cas je ne peux pas t'aider plus. =)
23 Juin 2006 15:47:16

Merci à tous mais alors... quelle fonction utiliser entre
preg_match_replace(), str_replace() et eregi_replace() ? :-(
23 Juin 2006 16:14:17

J'ai lu un article sur la fonction str_replace.

Je propose donc ce code :

  1. 1.
  2. <?php
  3. // Génère : <body text='black'>
  4. echo $bodytag = str_replace('<gras>', '<div class="gras">', '<body text="%body%">' );
  5. echo $bodytag = str_replace('</gras>', '</div>', '<body text="%body%">' );


Pourriez-vous me dire ce que vous pensez de ce code ?
25 Juin 2006 14:54:28

salut alors c'est quoi la récompense :-o

Alors j'ai pour ce faire (en espérant que j'ai bien compris le problème) utilisé preg_replace

si tu mets <coucou> il mettra <div class="coucou"> et si tu mets </coucou> il mettra </div> et si tu mets
??? ben il ne feras rien il laisseras


c'est à toi de gérer ton css pour qu'il affiche les trucs convenablement (par exemple j'ai mis align="center que tu doit virer et gérer dans ton css, j'ai mis pour que ça présente direct mais bon ça tu sauras gérer)

à la fin j'ai mis un htmlentities(nl2br($texte ...

remplace cette ligne par echo $texte; si c'était pas nécéssaire, j'espère que c'est ce que tu voulais

Important il faut mettre un espace entre inputettype
je l'ai fait mais il ne l'affichait pas sur ce site par sécurité surement, donc j'ai du virer l'espace (je sais pas pourquoi) mais il faut le remettre





<?php
if(!isset($_POST['texte']))
{
echo '<div id="formulaire" align="center">
<form method="post" value="">
<textarea name="texte" cols="80" rows="10"></textarea>
<input(supprimez ce texte et mettez juste un espace)type="submit" value="envoyer">
</form>
';

}
else
{
$texte = $_POST['texte'];

if ($texte = preg_replace('!</(.+)>!iU', '</div>', $texte));
if ($texte = preg_replace('!<([^/]+)>!iU', '<div class="$1">', $texte));

echo htmlentities(nl2br($texte));
}
?>

Citation :

grobs a écrit :
Bonjour à tous !!

Je voudrai vous demander quelque chose d
25 Juin 2006 15:18:18

L'utilisation des REGEX dans ce type d'application me semble sympa...Et c'est vraiment pas dur...

Admettons que ta variable d'entrée de texte (donc celle qui contient les <gras> texte </gras>) se nomme $entree_texte

Tu tape

$wrong_balise = array("!<gras>(.+)</gras>!i",
"!<souligne>(.+)</souligne>!i");
$right_balise = array("<b>$1</b>",
"<u>$1</u>");
$sortie_texte = preg_replace($wrong_balise, $right_balise, $entree_texte);

et il va automatiquement te changer toutes les occurences se trouvant dans $wrong_balise par leur correspondant dans $right_balise...Et ton texte pret a etre affiché sera stocké dans $sortie_texte...
L'inonvénient de ce système c'est que tu dois placer au meme endroit dans les array les balise a remplacer et les nouvelles balise...Sinon binnn...Ca va donner n'importe quoi...Il faut aussi que tu ais le meme nombre d'élément dans les deux variable $xxx_balise ...Ca va pas planter pour autant si y'en a pas un nombre égal mais a mon avis, dans un sens ça va faire n'importe quoi ^^
25 Juin 2006 19:42:05

Merci beaucoup à vous tous !!

Maleureusement, je n'ai pas de "récompense" particulière à vous offrir, si ce n'est de mettre votre site web dans les partenaires... ;-)

Je vais esayer d'appliquer la méthode de NiSNor puisqu'elle me parrait plus simple. Si je n'y arrive pas, je vous ferais signe.

Merci encore !! :-D
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS