Précédent   Forum du club des développeurs et IT Pro > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 08/01/2013, 10h38   #1
oni13
Membre du Club
 
Homme
Développeur Java
Inscription : décembre 2010
Messages : 91
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 : 91
Points : 56
Points : 56
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
oni13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 11h03   #2
sabotage
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 16 504
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 16 504
Points : 21 342
Points : 21 342
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/>';
}
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/01/2013, 11h22   #3
oni13
Membre du Club
 
Homme
Développeur Java
Inscription : décembre 2010
Messages : 91
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 : 91
Points : 56
Points : 56
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?
oni13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 11h32   #4
sabotage
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 16 504
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 16 504
Points : 21 342
Points : 21 342
10-13 c'est effectivement \r\n
Code :
$tab = explode(" \r\n", $str);
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/01/2013, 11h45   #5
oni13
Membre du Club
 
Homme
Développeur Java
Inscription : décembre 2010
Messages : 91
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 : 91
Points : 56
Points : 56
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
oni13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 04h41.


 
 
 
 
Partenaires

Hébergement Web