Fonction str_replace
Bonjour,
Les fonctions : str_replace, peut-on les utiliser sous cette forme sans causer de pertes de données, ou ralentir les systèmes ?
<?php
function caracteres($chaine){
$chaine = str_replace('à','à;',$chaine);
$chaine = str_replace('é','é',$chaine);
$chaine = str_replace('è','è',$chaine);
$chaine = str_replace('ê','ê',$chaine);
$chaine = str_replace('ç','ç',$chaine);
$chaine = str_replace('ï','ï',$chaine);
$chaine = str_replace('î','î',$chaine);
$chaine = str_replace('Î','Î',$chaine);
$chaine = str_replace('ô','ô',$chaine);
$chaine = str_replace('ù','ù',$chaine);
$chaine = str_replace('û','û',$chaine);
return $chaine;
}
?>
Ces fonctions pour remplacer les mots accentués après avoir été extrait de la table fonctionnent parfaitement bien en local.
Jack Bocar
le 18/10/2007 à 16:44
i M@N
hello.
Bon y'a un principe de base quand on veut coder quelque chose : ne pas réinventer la roue ...
$chaine = str_replace('à','à;',$chaine);
ça veut dire en PHP : remplace 'à' par 'à;' dans $chaine ...
il existe la fonction
htmlentities($chaine); qui fait exactement ça.
@+...
One Love, One Heart, One Unity.
i M@n a donné la solution à ton problème. Mais pour répondre à ton interrogations, non, il n'y a pas de risque de perte de données.
Mais c serait plus élégant ainsi :
<?php
function caracteres($chaine){
$chaine = str_replace
( array('à','é','è','ê','ç','ï','î','Î','ô','ù','û')
, array
( 'à'
, 'é'
, 'è'
, 'ê'
, 'ç'
, 'ï'
, 'î'
, 'Î'
, 'ô'
, 'ù'
, 'û'
)
, $chaine
) ;
return $chaine;
}
?>
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Bonjour,
Cette fonction, je la connais, mais lorsque je l'utilise, la fonction nl2br(), ne fonctionne plus.
Pour mes besoins, je veux pouvoir envoyer mes textes dans ma table avec les é, à ç, ù, ô etc.
Je ne veux pas que les lettres accentuées ne se transforme par des ?
J'insert dans la table en ISO, et je lis en ISO, mais pour les autres, si des lecteurs étrangers qui fonctionnent avec des navigateurs paramétrés différemment du mien, je ne veux pas nom plus qu'ils voient dès qu'ils ouvrent la page des ?.
C'est pour cette raison que je change les caractères accentués et seulement ces caractères en code HTML.
Si tu as une méthode pour faire fonctionner htmlentities() sans que nl2br() ou les <a href="">, ne soit de ce fait utilisables, dis-moi clairement de quelle manière dois-je faire.
Et pas il existe cette fonction, oui, elle existe, mais elle perturbe ceci ou cela.
Alors, comment dois-je faire ?
Pour mémoire, je ne protège aucunes données à l'insertion dans mes tables, je ne sais pas ce qui est le mieux pour moi et surtout, ne pas rencontrer de problèmes.
Avec ISO, j'utilisais :
Insertion
mysql_escape_string($_POST[])
Lecture
nl2br(htmlentities(trim($data)
Mais, j'ai des problèmes cités plus haut
Jack Bocar
Merci LupusMic
pour le code plus élégant
Jack Bocar
Salut
Tu as essayé
htmlspecialchars() Sinon essaie de modifier l'ordre de tes fonctions même si ca m a l'air correcte.
Jerome
Bonjour,
Merci de ta réponse.
Mais, ce que j'aimerai que l'on me dise ou que l'on me donne une hiérarchie conventionnelle qui serait :
1 – Lorsque tu inserts avec un formulaire qu'elle protections conventionnelles doit-ont placé devant : $_POST['nouvelle'] ?
Pour que dans la table, les é, à, è ne se transforment pas par des ?
1 – Lorsque tu lis la nouvelle, quelle protections doit-ont placé devant : $obj->nouvelle ?
Mes pages sont codées en ce moment avec : charset=iso-8859-1 ainsi que mes tables.
Je sais qu'il faudrait que je me serve de charset=utf-8, mais dans le cas d'insertion, mes caractères accentués se transforment dans la table par des ?
Alors, que dois-je faire pour travailler avec des encodages charset=utf-8 tables et pages ?
Pour mon cas personnel, je travail avec PHP5 et MYSLI, j'ai donc comme protection sur mes ouvrages pour insérer : mysqli_real_escape_string( $_POST['nouvelle']), il n'est pas spécifié de type d'encodage pour les charsets le la table.
Pour ne pas avoir de problèmes de lectures, il faut que je protège avec quoi pour ceci : $obj->nouvelle ?
Merci de ta réponse, mais fais moi SVP un exemple pour travailler avec l'encodage charset=utf-8.
Jack Bocar
Ecrire un message
Votre message vient d'être créé avec succès.
BB-Code
Pour insérer une URL clickable
Pour insérer une adresse E-mail
Pour annoter
Pour écrire du code
Pour faire un lien vers une fonction PHP
Pour écrire du texte préformaté
Pour écrire du texte en gras
Pour écrire du texte en italique
Pour écrire du texte souligné
Pour écrire du texte barré
Pour écrire un titre principal
Pour écrire un titre secondaire
Pour écrire une liste
Smiley
:bond:
:boxe:
:bsmile:
:bump:
:clap:
:coeur:
:cool:
:cry:
:eek:
:evil:
:fleur:
:fou2:
:fou:
:grin:
:grrr:
:hammer:
:hippy:
:hum:
:idee2:
:idee:
:kdo:
:king:
:ko:
:lol:
:love2:
:love:
:mad:
:maitre:
:noel:
:oops:
:raa:
:razz:
:roll:
:sad:
:skull:
:smile:
:timide:
:trink:
:vice:
:vomi:
:wink:
:zzz: