2011-06-20 3 views
0

J'ai une zone de texte qui permet aux utilisateurs d'écrire leur propre entrée qui est enregistrée dans la base de données.Détection des onglets copiés dans la zone de texte pour l'entrée de la base de données

La majorité des utilisateurs copient leur texte à partir d'un mot ou d'un programme similaire, qui copie également leurs onglets dans la zone de texte.

Lorsque les onglets sont enregistrés dans la base de données, ils sont automatiquement convertis en un seul espace. Je souhaite enregistrer les onglets comme onglets appropriés dans la base de données ou un nombre défini d'espaces, mais je ne peux pas attraper les onglets en premier lieu.

C'est ce que je l'ai essayé jusqu'à présent (après avoir obtenu l'entrée de l'utilisateur et avant d'enregistrer à la base de données)

str_replace("\t", " ", $string); 
str_replace(chr(9), "  ", $string); 

Cependant, je peux dire que les onglets ne sont même pas pris parce que je essayez ceci:

if (strpos($string, "\t") !== false) 
{ 
    exit("The tab was found"); 
} 

La 'sortie' ne s'appelle jamais.

J'ai cherché intensivement pour une réponse à ceci, cependant je n'ai pas pu trouver n'importe quelles corrections.

J'apprécierais vraiment de l'aide sur celui-ci.

+0

"Lorsque les onglets sont enregistrés dans la base de données, ils sont automatiquement convertis en un seul espace." --- Vous devez découvrir de ce point. La base de données stocke tout ce que vous mettez là. Comme si. – zerkms

+0

Que fait 'foreach ($ string as $ char) en écho" $ char: ". ord ($ char). "\ n"; 'vous donner? Vous devriez être capable de comprendre ce que sont vraiment ces caractères, car ils ne sont clairement pas des onglets réels. –

+0

Le problème est plus loin dans la chaîne. Il semble que la variable qui est transmise à PHP ne contient pas d'onglets pour une raison quelconque. Pouvez-vous poster un lien vers votre formulaire? JavaScript est-il utilisé pour envoyer la valeur du formulaire à votre script PHP ou soumettez-vous le formulaire directement? Y a-t-il un pré-traitement sur les valeurs du formulaire avant de voir la valeur? –

Répondre

1

Commentaire de Nathan Bell "Y a-t-il un pré-traitement sur les valeurs de formulaire avant de voir la valeur?". Cela m'a fait réfléchir. J'utilise codeigniter comme framework PHP. Après avoir fait quelques recherches et en regardant le code source, je trouve que la construction dans la classe de sécurité a été mise en forme tous mes onglets dans un seul espace, comme si ...

if (strpos($str, "\t") !== FALSE) 
{ 
    $str = str_replace("\t", ' ', $str); 
} 

Donc tout ce que je n'étais changer le code source ceci:

if (strpos($str, "\t") !== FALSE) 
{ 
    $str = str_replace("\t", '  ', $str); 
} 

Et cela fonctionne maintenant. Alors merci Nathan et tous ceux qui ont aidé pour l'aide!

Questions connexes