Problème d'extraction de chaîne contenant "ù"

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème d'extraction de chaîne contenant "ù"

Re: Problème d'extraction de chaîne contenant "ù"

par mikael.fichou » 09 nov. 2012, 18:59

Merci pour cette précision.

Mikael

Re: Problème d'extraction de chaîne contenant "ù"

par sirakawa » 09 nov. 2012, 17:56

pour avoir la paix:
mb_internal_encoding( 'UTF-8');
avant toute chose; mais j'ai fini par convertir toutes mes chaines en tableaux et à créer moi même toutes les fonctions dont j'avais besoin

[RESOLU]Problème d'extraction de chaîne contenant "ù"

par mik » 09 nov. 2012, 12:46

OUAHHHHHHHHHH...

6 heures de recherches hier soir... et une solution rapide sur le forum.

Merci beaucoup pour votre aide, cela fonctionne à merveille. Je vais de ce pas étudier la fonction mb_substr de plus près.

Mikael

Re: Problème d'extraction de chaîne contenant "ù"

par dix2 » 09 nov. 2012, 12:10

salut,

en UTF8, tous les caractères ne sont pas encodés avec le même nombre d'octets
par exemple, le caractère 'a' est codé sur 1 octet mais le caractère 'ù' est codé sur 2 octets
ce qui explique, les résultats obtenus avec la fonction strlen()

donc il faut faire :
<?php
$string = "Où vas-tu ?";

$lg = strlen(utf8_decode($string));

$ou = mb_substr($string,0,2, 'UTF8');
$ou2 = htmlentities($ou);

echo "Longueur de chaîne : ".$lg."<br>
                Chaîne : ".$string."<br>
                Le substr : ".$ou."<br>
                Le htmlentities : ".$ou2;
@+
dix2

Re: Problème d'extraction de chaîne contenant "ù"

par Mazarini » 09 nov. 2012, 12:08

Il y a éventuellement le problème du charset de ton PC et donc du "ù" que tu as dans ton fichier.

Pour éviter certain problème, regarde le source html plutôt que l'affichage du navigateur.

Tu peux également faire & ugrave; => ù => & ugrave; avec html_entity_decode()/htmlentities()

Re: Problème d'extraction de chaîne contenant "ù"

par mik » 09 nov. 2012, 11:49

Merci pour la réponse.

Hélas cette ligne est déjà présente dans le <head>.

J'ai aussi essayé plusieurs fonctions sur les chaînes comme utf8_decode, utf8_encode, ou encore récupérer le code ASCII du caractère pour ensuite le reconvertir en lettre, mais rien n'y fait.

Mikael

Re: Problème d'extraction de chaîne contenant "ù"

par Mazarini » 09 nov. 2012, 11:31

Peut être qu'en précisant le charset dans le "head" de la page, comme par exemple : <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Problème d'extraction de chaîne contenant "ù"

par mik » 09 nov. 2012, 11:14

Bonjour,

Désolé par avance si la réponse à ce problème a sans doute été déjà trouvée, mais j'ai beau cherché dans plusieurs forums et aucune solution proposée ne parvient à résoudre mon problème. Tout ça pour dire que j'ai cherché avant de créer le post.

Le problème est simple, voici le code :
<?php 

$string = "Où vas-tu ?";

$lg = strlen($string);

$ou = substr($string,0,2);
$ou2 = htmlentities($ou);

echo "Longueur de chaîne : ".$lg."<br>
		Chaîne : ".$string."<br>
		Le substr : ".$ou."<br>
		Le htmlentities : ".$ou2;

?>
Cela m'affiche :
Longueur de chaîne : 12
Chaîne : Où vas-tu ?
Le substr : O�
Le htmlentities : OÃ
Je voudrais bien entendu récupérer "Où".

Pourquoi la chaîne est-elle plus longue de 1 ?

Si je fais :
<?php 

$string = "tudoù";

$lg = strlen($string);

$ou = substr($string,4,2);
$ou2 = htmlentities($ou);

echo "Longueur de chaîne : ".$lg."<br>
		Chaîne : ".$string."<br>
		Le substr : ".$ou."<br>
		Le htmlentities : ".$ou2;

?>
J'obtiens :
Longueur de chaîne : 6
Chaîne : tudoù
Le substr : ù
Le htmlentities : ù
Donc le "ù" avec le substr.

Je vous avoue que je n'y comprends rien... Le "ù" occuperait-il deux caractères ?

Merci pour tous les éclaircissements que vous pourriez m'apporter.

Mikael