Page 1 sur 2
Remplacement de mots
Posté : 06 mars 2006, 12:11
par enky
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
Posté : 06 mars 2006, 12:39
par mario
<?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 !!!
*/
?>
Posté : 06 mars 2006, 13:08
par enky
Ca n'a pas l'air de marcher.
$chaine étant la variable utilisée pour les messages.
Posté : 06 mars 2006, 13:11
par charabia
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.
Posté : 06 mars 2006, 13:13
par mario
Ca n'a pas l'air de marcher
Ca ne m'aide pas bcp cette phrase
Montre nous un morceau de code
Posté : 06 mars 2006, 13:13
par enky
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é.
Posté : 06 mars 2006, 13:18
par mario
](*,) c'est pas enregistré dans quoi ??? fichier, base, dictaphone

Posté : 06 mars 2006, 13:20
par charabia
Attention mario...tu vas faire mal au mur
enky, pour éviter de tourner en rond et nous laisser deviner, soit beaucoup plus précis si tu veux une aide correcte...
Posté : 06 mars 2006, 13:29
par enky
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.
Posté : 06 mars 2006, 13:32
par mario
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.
Posté : 06 mars 2006, 13:36
par zeus
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 
Posté : 06 mars 2006, 13:43
par enky
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
Posté : 06 mars 2006, 13:46
par mario
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
ça veut dire que la fonction str n'existe pas... réfère toi à la première portion (voir tout en haut)

Posté : 06 mars 2006, 13:48
par Ryle
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() 
Posté : 06 mars 2006, 13:52
par enky
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]