2010-06-23 5 views
2

Voici mon pseudo code fsuppé. Quelqu'un sait comment rendre cela réel?Désinfecter le texte collé de MS-Word

Contexte:

Ce contenu dynamique provient d'un ckeditor. Et beaucoup de gens y mettent du contenu Microsoft Word. Pas de soucis, si j'appelle juste l'attribut intacte, il se charge plutôt bien. Mais le hic, c'est que je veux que ce soit juste 125 caractères en abrégé. Lorsque j'y ajoute la troncature, tous les scripts Microsoft Word commencent à apparaître. Puis j'ai ajouté simple_format, et aseptisé, et tronqué, et même fait que mon contrôleur commence à identifier des variables spécifiques que MS ferait et les gsub. Mais il y en a trop, et cela semble être une manière terriblement désordonnée d'accomplir cela. Ainsi donc! Réalisant que par lui-même, c'est propre. J'ai pensé, pourquoi ne pas le couper en tranches. Cependant, le texte du mot Microsoft devient vide mais conserve sa position numérotée dans la chaîne. Donc je suis venu avec cette solution (probablement horrible) ci-dessous.

C'est en trois étapes.

  1. Lorsque le texte est analysé, il n'affiche aucun des fichiers indésirables MSWord. Mais ce texte conserve toujours une position numérique dans une déclaration de tranche. Donc, je veux utiliser une expression rationnelle pour trouver le premier caractère réel.
  2. Prenez ce caractère et découvrez sa position numérotée dans la chaîne totale.
  3. Utilisez une instruction de découpe pour la couper.

    def about_us_truncated 
        x = self.about_us.find.first(regExp representing first actual character) 
        x.charCount = y 
        self.about_us[y..125] 
    end 
    

La seule autre idée que je suis arrivé, est une déclaration regex qui lui permet de trancher explicitement que les caractères réels comme ceci:

about_us([a-zA-Z][0..125]), mais qui est certainement pas la façon dont il est écrit.

Voici un exemple de texte de courrier indésirable MS Word:

≪! [If Gte Mso 9]>≪Xml>≪Br /> ≪O:Office Document Settings>≪Br /> ≪O:Allow Png/>≪Br /> ≪/O:Off... 
+0

Um ... MSWord indésirable? –

+0

Pouvez-vous donner un peu plus de contexte sur ce que vous essayez de faire ici? –

+0

Contexte d'arrière-plan ajouté – Trip

Répondre

1

Ceci n'est techniquement pas une réponse directe, mais il semble être le meilleur que vous pouvez trouver. Afin de prévenir MS Word, vous devriez utiliser le désinfectant MS Word de CK Editor. C'est parce qu'écrire l'expression rationnelle pour cela peut être très compliqué et vous pouvez très facilement casser des étiquettes dans la moitié et détruire votre emplacement avec lui.

Ce que j'ai fait pour contourner le problème, c'est que j'ai fait un collage forcé en texte brut dans l'éditeur CK.

+0

Comment utilisez-vous ce désinfectant? – cmrichards

1

Vous n'avez pas fourni beaucoup d'informations à partir de, mais ne soyez pas trop méfiants d'essayer de construire ce regex sur votre propre avant vous cherchez de l'aide ...

Prenez votre exemple de texte et collez-le dans Rubular dans la zone de chaîne de test et commencez à construire votre regex. Il a une excellente référence rapide en bas.

1

tombés sur cet

http://gist.github.com/139987

on dirait qu'il nécessite la gemme sanitize.

+0

Awesome find! Je vais vous laisser savoir comment ça se passe. Je ne peux pas croire que je n'ai pas trouvé ça hier. – Trip

+0

Hmm .. cela n'a pas fonctionné. Principalement parce qu'ils veulent que vous entriez manuellement les éléments et MSWord en a un million. – Trip

Questions connexes