2010-02-20 7 views
0

Je veux imprimer une table en PHP, chaque ligne a un bouton pour charger son contenu (codes HTML) dans l'instance CKEditor.Gestion des guillemets lors de l'utilisation de la fonction CKEditor setData

$column = '<td><a href="#" onclick="CKEDITOR.instances.editor.setData(' . "'" . $HTMLcode . "');" . '">Load</a></td>'; 
echo $column; 

Le code HTML contient également des citations en raison des styles CSS:

<p style='text-align: center;'> 

J'ai eu ce résultat, évidemment, il casse le code:

<a href="#" onclick="CKEDITOR.instances.editor.setData('<p style='text-align: center;'>Great.</p>');">Load</a> 

Toute solution de contournement pour cela? Toute aide serait appréciée! Merci d'avance, Daniel.

Répondre

1

La solution commune est htmlentities():

$column = '<td><a href="#" onclick="CKEDITOR.instances.editor.setData(' 
     . "'" . htmlentities($HTMLcode, ENT_QUOTES) . "');" . '">Load</a></td>'; 

Il y a aussi addslashes() qui devrait faire la analysable chaîne en JavaScript.

Renvoie une chaîne avec barre oblique inverse avant les caractères qui doivent être cités dans les requêtes de base de données, etc. Ces caractères sont guillemets simples ('), guillemet ("), barre oblique inverse() et NUL (l'octet NULL).

ce qui parle pour le choix htmlentities() sur addslashes() est le fait que dans un document HTML valide, il doit y avoir aucune esperluette premières &. Ils ont besoin d'être échappé comme &amp;même dans les déclarations JavaScript lorsque ceux-ci sont non inclus dans les étiquettes CDATA

+0

Merci à tous pour les réponses! htmlentities pour la victoire :) –

1

Fondamentalement, vous avez des guillemets dans une chaîne, et vous voulez les échapper.

Une solution, je suppose, serait d'utiliser quelque chose comme addslashes:

$HTMLcode = "<p style='text-align: center;'>"; 
$column = '<td><a href="#" onclick="CKEDITOR.instances.editor.setData(' . "'" 
      . addslashes($HTMLcode) . "');" 
      . '">Load</a></td>'; 
echo $column; 

Et vous obtiendrez le code HTML suivant:

<td><a href="#" onclick="CKEDITOR.instances.editor.setData('<p style=\'text-align: center;\'>');">Load</a></td> 

-à-dire les guillemets dans la chaîne qui est passé à CKEDITOR.instances.editor.setData sont échappés.