2011-11-02 2 views
0

J'utilise var_dump pour sortir une chaîne mais la longueur est différente de ce qui est affiché alors j'ai imprimé chaque caractère et j'ai trouvé qu'il y avait les codes html cachés # 40; et # 41; dans la chaîne attribuant à la longueur. Ceux-ci causent des problèmes dans une instruction sql donc j'essaie de les supprimer, mais htmlspecialchars_decode, et urldecode ne supprime pas les caractères. Comment puis-je faire rouler ces codes? La valeur provient d'une base de données est utf-8 (CHARSET = utf8 COLLATE = utf8_bin) et ne contient aucun code html (stocké comme "Civic (sedan)" dans la table).html code apparaissant dans la chaîne php

//this is the output of the string 
Civic (#40;sedan)#41; 
echo var_dump($data['model']).'<br>'; 

//output 
string(21) "Civic (sedan)" 

echo var_dump(strip_tags($data['model'])).'<br>'; 

//output 
string(21) "Civic (sedan)" 

echo var_dump(htmlspecialchars_decode($data['model'])).'<br>'; 

//output 
string(21) "Civic (sedan)" 

echo var_dump(urldecode($data['model'])).'<br>'; 

//output 
string(21) "Civic (sedan)" 
+0

pourriez-vous pas faire une str_replace(); ? – TheBlackBenzKid

+0

Je pourrais mais alors je devrais remplacer la chaîne d'autres caractères, qui je ne sais pas sont stockés dans une base de données de 60 000 enregistrements –

+0

vous auriez besoin de remplacer un tableau massif sauf si vous saviez avec certitude tous les cas. preg_replace serait mieux –

Répondre

0

html_entity_decode() est ce que vous êtes après, je pense ...

+0

Mais cela permettrait de convertir 'Civic (# 40; berline) # 41;' en Civic ((sedan)) '. Mais peut-être que la sortie donnée a été mal typée. – mAu

+0

html_entity_decode() a fait l'affaire. Merci! –