p
u
b
l
i
c
i
t
é
publicité

Discussion: Caractere non reconnu

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    décembre 2010
    Messages
    98
    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 : 98
    Points : 59
    Points
    59

    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
    24 168
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 24 168
    Points : 35 542
    Points
    35 542

    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/>';
    }

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    décembre 2010
    Messages
    98
    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 : 98
    Points : 59
    Points
    59

    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
    24 168
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 24 168
    Points : 35 542
    Points
    35 542

    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);

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    décembre 2010
    Messages
    98
    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 : 98
    Points : 59
    Points
    59

    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