Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  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 : 54
    Points
    54

    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 :
    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 Vincent
    Inscrit en
    juillet 2005
    Messages
    20 921
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent

    Informations forums :
    Inscription : juillet 2005
    Messages : 20 921
    Points : 27 315
    Points
    27 315

    Par défaut

    Une idée pour debuguer :
    Code :
    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 : 54
    Points
    54

    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 Vincent
    Inscrit en
    juillet 2005
    Messages
    20 921
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent

    Informations forums :
    Inscription : juillet 2005
    Messages : 20 921
    Points : 27 315
    Points
    27 315

    Par défaut

    10-13 c'est effectivement \r\n
    Code :
    $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 : 54
    Points
    54

    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 :
    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •