Remplacement de mots

enky
Invité n'ayant pas de compte PHPfrance

06 mars 2006, 12:11

Salut,
J'ai ici un script qui permet de remplacer des mots par un autre :

$banwords = Array('imbecile','idiot','cretin');
$remplacement = 'censuré';
$message = str_replace($banwords, $remplacement, $message);


Le problème c'est que ca remplace toujours par le même mot et c'est long si je refais le même script pour chaque mot à remplacer. J'aimerais savoir s'il y a un moyen plus simple de remplacer des mots par d'autres :

ossi ------remplacer par----> aussi
keske -> qu'est-ce que
slt -> salut
osecour -> au secours

Mammouth du PHP | 768 Messages

06 mars 2006, 12:39

<?php
$mots = array('keske' => 'qu\'est ce que', 'slt' => 'salut', 'osecour' => 'au secours'); 
$chaine = 'slt, j\'ai un pbl, keske je peux faire avec la fonction strtr<br/>osecour !!!';
echo strtr($chaine, $mots);
/*
Affiche:
salut, j'ai un pbl, qu'est ce que je peux faire avec la fonction strtr
au secours !!!
*/
?>
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

enky
Invité n'ayant pas de compte PHPfrance

06 mars 2006, 13:08

Ca n'a pas l'air de marcher.

$chaine étant la variable utilisée pour les messages.

Avatar du membre
ViPHP
ViPHP | 3008 Messages

06 mars 2006, 13:11

Je confirme que le code de Mario fonctionne. As-tu un jeu de test de chaîne à nous montrer ? Là où ça bloque chez toi.

Mammouth du PHP | 768 Messages

06 mars 2006, 13:13

Ca n'a pas l'air de marcher
Ca ne m'aide pas bcp cette phrase :x

Montre nous un morceau de code
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

enky
Invité n'ayant pas de compte PHPfrance

06 mars 2006, 13:13

Au fait, il n'y a que pour l'affichage que ca marche :
echo

Mais c'est pas enregistré, alors que pour mon script de remplacement c'est bien enregistré.

Mammouth du PHP | 768 Messages

06 mars 2006, 13:18

](*,) c'est pas enregistré dans quoi ??? fichier, base, dictaphone :?
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Avatar du membre
ViPHP
ViPHP | 3008 Messages

06 mars 2006, 13:20

Attention mario...tu vas faire mal au mur :langue:

enky, pour éviter de tourner en rond et nous laisser deviner, soit beaucoup plus précis si tu veux une aide correcte...

enky
Invité n'ayant pas de compte PHPfrance

06 mars 2006, 13:29

Avez-vous essayé ce script sur ce forum ?
Ca ne marche pas quelque soit le script, meme les script de mail.

Je pense avoir compris le non fonctionnement. Ca c'est juste pour l'affichage :

echo strtr($chaine, $mots);

pour ceux qui n'ont pas compris.
C'est pas l'affichage que je veux. Chercher l'erreur.

Mammouth du PHP | 768 Messages

06 mars 2006, 13:32

echo strtr($chaine, $mots);
echo génère l'affichage de la chaîne.
Si tu souhaites la stocker dans une variable, remplace cette ligne par:
$chaine = str($chaine, $mots);
et utilise la variable $chaine dans la fonction mail() ou lors de l'insertion de la phrase dans une base de donnée.
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

06 mars 2006, 13:36

modération : enky, si tu veux que nous puissions t'aider, il va falloir que tu donnes plus de détail.

Au lieu de dire que ça ne marche pas, dit nous pourquoi tu penses que ça ne marche pas : message d'erreur, valeur enregistrée invalide ...

Nous avons compris que ce n'est pas un affichage que tu veux mais pour pouvoir t'aider, il nous faut savoir ce que tu veux et ce que tu met en oeuver pour y arriver ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

enky
Invité n'ayant pas de compte PHPfrance

06 mars 2006, 13:43

Oui, c'est exactement ce que je veux. Pour éviter de corriger sans cesse les fautes d'orthographe ou langage sms sur les forums sans cesse.

<?
$mots = array('keske' => 'quest ce que', 'slt' => 'salut', 'osecour' => 'au secours');
$message = str($message, $mots);
?>


Par contre, j'ai un message d'erreur sur la ligne : $message = str($message, $mots);

Fatal error: Call to undefined function: str() on line 3

Mammouth du PHP | 768 Messages

06 mars 2006, 13:46

Par contre, j'ai un message d'erreur sur la ligne : $message = str($message, $mots);

Fatal error: Call to undefined function: str() on line 3
oui j'ai fait une erreur bettement et tu l'as recopié de la même façon :wink:
ça veut dire que la fonction str n'existe pas... réfère toi à la première portion (voir tout en haut) :lol:
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

06 mars 2006, 13:48

Fatal error: Call to undefined function: str() on line 3
Erreur fatale : appel à une fonction inexistante : str() à la ligne 3.

Essayes peut être avec strtr() ;)

enky
Invité n'ayant pas de compte PHPfrance

06 mars 2006, 13:52

Oui, c'est bien strtr :

<?
$mots = array('keske' => 'qu\'est ce que', 'slt' => 'salut', 'osecour' => 'au secours');
$message = strtr($message, $mots);
?>

Je savais pas que c'était aussi simple que ca.[/b]