1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    juin 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : juin 2017
    Messages : 2
    Points : 3
    Points
    3

    Par défaut Remplacer des caractères spéciaux avec preg_replace

    Bonjour à tous, j'essai d'utiliser le preg_replace mais j'ai deux erreurs qui me bloquent:

    -Notice: Array to string conversion in C:\xampp\htdocs\test_php\test.php on line 34
    -Warning: preg_replace(): Parameter mismatch, pattern is a string while replacement is an array in C:\xampp\htdocs\test_php\test.php on line 34
    Je veux remplacer tous les caractères spéciaux par des caractères normaux dans une chaîne mais je n'y arrive pas

    Le HTML:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	<h1>Vous cherchez une maison des services proche de chez vous?</h1>
    	<form method="POST">
    		<input id="search_field" type="search" name="search" size="50" placeholder="Votre commune (nom complet) ...">
    		<input id='submit' type="submit" name="submit" value="Valider">
    	</form>
    Le PHP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	$search = $_POST['search'];
     
    	$caracteres = ['a', 'Á' => 'a', 'Â' => 'a', 'Ä' => 'a', 'à' => 'a', 'á' => 'a', 'ä' => 'a',
    	'È' => 'e', 'É' => 'e', 'Ê' => 'e', 'Ë' => 'e', 'è' => 'e', 'é' => 'e', 'ê' => 'e', 'ë' => 'e',
    	'Ì' => 'i', 'Í' => 'i', 'Î' => 'i', 'Ï' => 'i', 'ì' => 'i', 'í' => 'i', 'î' => 'i', 'ï' => 'i',
    	'Ò' => 'o', 'Ó' => 'o', 'Ô' => 'o', 'Ö' => 'o', 'ò' => 'o', 'ó' => 'o', 'ô' => 'o', 'ö' => 'o',
    	'Ù' => 'u', 'Ú' => 'u', 'Û' => 'u', 'Ü' => 'u', 'ù' => 'u', 'ú' => 'u', 'û' => 'u', 'ü' => 'u',
    	'Œ' => 'oe', 'œ' => 'oe'];
     
    $search = strtr($search, $caracteres);
    $search = preg_replace('##'.array_keys($caracteres).'##',array_values($caracteres), $search);
    $search = strtolower($search);
    echo($search);
    Toute aide est la bienvenue, je comprends pas vraiment l'utilité des délimiteurs non plus.

    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    juin 2003
    Messages
    6 356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2003
    Messages : 6 356
    Points : 10 213
    Points
    10 213

    Par défaut

    déjà il y a un petit soucis dans votre tableau, il y a un "a" tout seul au début, je suppose que c'est 'À' => 'a'

    ensuite avec le tableau de remplacement construit comme cela, je vous conseille d'utiliser la fonction http://php.net/str_replace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $caracteres = ['À' => 'a', 'Á' => 'a', 'Â' => 'a', 'Ä' => 'a', 'à' => 'a', 'á' => 'a', 'ä' => 'a',
    'È' => 'e', 'É' => 'e', 'Ê' => 'e', 'Ë' => 'e', 'è' => 'e', 'é' => 'e', 'ê' => 'e', 'ë' => 'e',
    'Ì' => 'i', 'Í' => 'i', 'Î' => 'i', 'Ï' => 'i', 'ì' => 'i', 'í' => 'i', 'î' => 'i', 'ï' => 'i',
    'Ò' => 'o', 'Ó' => 'o', 'Ô' => 'o', 'Ö' => 'o', 'ò' => 'o', 'ó' => 'o', 'ô' => 'o', 'ö' => 'o',
    'Ù' => 'u', 'Ú' => 'u', 'Û' => 'u', 'Ü' => 'u', 'ù' => 'u', 'ú' => 'u', 'û' => 'u', 'ü' => 'u',
    'Œ' => 'oe', 'œ' => 'oe'];
     
    $chaine = "Je veux remplacer tous les caractères spéciaux par des caractères normaux dans une chaîne. Œ²€";
     
     
    $resultat = str_replace(array_keys($caracteres), array_values($caracteres), $chaine);
     
    echo $resultat;

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    juin 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : juin 2017
    Messages : 2
    Points : 3
    Points
    3

    Par défaut

    Merci de cette réponse rapide, du coup j'ai changé de tactique, vu que j'ai fait une auto-complétion en html, j'ai décidé de ne pas transformer les chaînes. Cela pourrait être perturbant pour les futures utilisateurs. M'ai je garde ce code sous la mains il peut être bien utile.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Remplacement des caractères spéciaux html
    Par duburov dans le forum Langage
    Réponses: 4
    Dernier message: 26/04/2010, 21h19
  2. Réponses: 1
    Dernier message: 14/05/2008, 17h58
  3. [Remplacer des caractères spéciaux en caractères normaux]
    Par metalamania dans le forum Général Python
    Réponses: 2
    Dernier message: 23/02/2007, 16h18
  4. Fonction qui remplace des caractères spéciaux
    Par ViRouF dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 07/08/2006, 10h24
  5. traitement des caractères spéciaux avec XSLT
    Par Mirgue dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 19/07/2004, 16h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo