PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 12-02-2014 22:18:31

poupou
Membre
Inscription : 12-02-2014
Messages : 1

? à la fin d'une requête sql en utilisant substr_replace

Bonsoir,

Je découvre un petit peu votre forum et je viens à vous car je rencontre une petite difficulté.

En utilisant ce bout de code:


$product_name = $PrestaShopdb->get_var("SELECT name FROM ps_product_lang WHERE id_product=$product_id AND id_lang=$language");
$product_name = substr_replace($product_name, '...', 32);
 

Le résultat de ma requête s'affiche correctement, ma variable est donc tronqué à 32 caractères et les trois petits points à la fin s'affichent aussi.

Dans le contenu de la variable les accents s'affiche correctement, par contre à l'endroit même ou est tronqué le texte si la dernière lettre juste avant est avec un accent cela m'affiche un petit losange noir avec un point d’interrogation à l'intérieur.

J'ai essayé de rajouter ceci:

$product_name = mb_convert_encoding($product_name, "UTF-8");

Mais le problème est toujours présent, à la différence que j'ai un point d'interrogation tout simple sans le losange.

J'en profite aussi pour vous demandez comment fait on pour faire en sorte que dans une boucle de 3 titres sur 10 par exemple, les 3 qui s'affichent soit tous différents les un des autres pour ne pas me retrouver avec 2 même titre sur 3 qui s'afficherait.

Je ne sais vraiment pas comment faire régler ce soucis surtout la première et je vous serais très reconnaissant si vous pouviez m'aider.

Je vous souhaite une bonne soirée.

Dernière modification par poupou (12-02-2014 22:18:56)

Hors ligne

#2 13-02-2014 04:31:18

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : ? à la fin d'une requête sql en utilisant substr_replace

Bonjour,

votre problème suggère que vous n'avez pas uniformisé votre encodage entre apache et votre serveur base de données ou "synchronisé" pour le moins (car parfois il peut être à la fois différent et être incontournable pour des raisons techniques).

Sinon bien que je pense que cela ne devrait pas résoudre votre problème, votre meilleure chance je pense, ne connaissant pas l'exactitude de votre configuration serveur et code, est d'essayer la solution proposée dans le manuel de PHP à savoir:


function substr_unicode($str, $start, $length = null) {
    return join("", array_slice( preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY), $start, $length));
}
$product_name=substr_unicode($product_name,0,32).'...';
 

++


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

Pied de page des forums