IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Caractere non reconnu [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 125
    Points : 98
    Points
    98
    Par défaut Caractere non reconnu
    Bonjour,

    j'ai fais une fonction qui prend un chaine en parametre, et retourne la chaines en mettant des <a></a> si il faut.
    Pour cela j'utilise
    Voire
    (j'ai essayé avec &nbsp; mais non)

    La fonction marche en test (texte écrit en dur), mais lorsque je récupere mon texte de la BDD il ne reconnait pas l'espace. Pourtant mon echo $str; juste avant mon traitement affiche bien ma chaine avec les espaces...

    Est-ce un problème de ma bdd? Interclassement ou autre?
    Config de ma page php?
    Mes champs sont des "text" "latin1_swedish_ci"(defaut) je sais jamais comment configurer ça, j'ai pas de contrainte particulière...

    Avez-vous une idée?
    Merci

    Ma fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function linke($str){
    	$tab = explode(' ', $str);
    //echo $tab[0]; renvoie une chaine avec une espace...
    //==> http://serveur.domaine:8081/appli/ ou http://serveur2.domaine2:8081/appli2
    	$return = "";
    	foreach($tab as $s){
    		if(startsWith($s, "http")) //definie dans ma page :)
    			$return.="<a href='$s'>$s</a> ";
    		else $return.=$s." ";
    	}
    	return $return;
    }
    PS: Bon ca n'est pas la meilleure stratégie, si il y a des espaces dans l'url etc etc... mais pour l'instant je veux juste comprendre ce souci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Une idée pour debuguer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $str = "le petit chien se promène";
    $len = mb_strlen($str);
    for ($i = 0; $i < $len; $i++) {
       $car = substr($str,$i,1);
       echo $car . " : " . ord($car) . '<br/>';
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 125
    Points : 98
    Points
    98
    Par défaut
    Hello,

    Ok avec cette astuce je vois que mon espace est en fait une suite de caracteres 13 et 10 (apparemment retour chariot et nouvelle ligne).
    Effectivement j'ai mis un saut de ligne dans ma table mais il me semblait que ça donnait \n ?

    Il n’empêche que le HTML considère ça comme un espace :-/

    Il n'y a pas un encodage qui peut régler ça? Je dois forcement tester la présence de 10+13 en convertissant tout en ascii?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    10-13 c'est effectivement \r\n
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tab = explode(" \r\n", $str);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 125
    Points : 98
    Points
    98
    Par défaut
    Ah oui exact, le \r\n

    Du coup j'ai du gérer les 2 cas, retour ligne et espace, donc je m'en sors avec des explode "impriqués"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function linke($str){
    	$tab= explode("\r\n", $str);
    	$return = "";
    	foreach($tab as $s){
    		$tab2 = explode(" ", $s);
    		foreach($tab2 as $s2){
    			if(startsWith($s2, "http"))
    				$return.="<a href='$s2'>$s2</a> ";
    			else $return.=$s2." ";
    		}
    	}
    	return $return;
    }
    Merci pour ton aide

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/05/2006, 11h22
  2. Commandes non reconnues.
    Par Manu' dans le forum Administration système
    Réponses: 3
    Dernier message: 07/10/2004, 17h09
  3. [EJB] [JSP] Méthode EJB non reconnue dans jsp
    Par stago dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 06/07/2004, 09h52
  4. Creation de table, caractère non reconnu
    Par Missvan dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 17/02/2004, 13h28
  5. xslt_create() non reconnu
    Par BRAUKRIS dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 11/12/2003, 14h43

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