2010-06-23 2 views
2

Вот мой дикий и странный псевдо-код. Кто-нибудь знает, как сделать это реальным?Sanitize вставляемый текст из MS-Word

фона:

Этот динамический контент происходит от CKEditor. И многие люди вставляют в него контент Microsoft Word. Не стоит беспокоиться, если я просто называю атрибут нетронутым, он загружается красиво. Но уловка в том, что я хочу, чтобы это было всего 125 символов. Когда я добавляю к нему усечение, все скрипты Microsoft Word начинают появляться. Затем я добавил simple_format, и дезинфицирую, и усекаю, и даже заставил мой контроллер начать определять определенные переменные, которые MS будет делать, и gsub их. Но их слишком много, и это кажется ужасно грязным способом достичь этого. Так вот! Понимая, что само по себе это чисто. Я подумал, почему бы просто не нарезать его. Тем не менее, текст слова microsoft становится пустым, но по-прежнему сохраняет свою нумерованную позицию в строке. Поэтому я придумал это (возможно, ужасное) решение ниже.

Это в трех шагах.

  1. Когда текст анализирует, он не отображает ни одного из мусора MSWord. Но этот текст по-прежнему содержит номер позиции в выражении среза. Поэтому я хочу использовать регулярное выражение для поиска первого фактического символа.
  2. Возьмите этот символ и узнайте, что его пронумерованное положение находится в общей строке.
  3. Используйте сокращенное выражение, чтобы вырезать его.

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

Единственная другая идея я получил, это регулярное выражение утверждение, что позволяет ему явно нарезать только фактические символы, такие как так:

about_us([a-zA-Z][0..125]), но это определенно не так, как написано.

Ниже приведен пример текста барахла MS Word:

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

Ум ... MSWord мусор? –

+0

Можете ли вы дать немного больше информации о том, что вы пытаетесь сделать здесь? –

+0

Добавленный фоновой контекст – Trip

ответ

1

Это технически не прямой ответ, но он кажется лучшим, который вы можете найти.

Чтобы предотвратить использование MS Word, вы должны использовать встроенный MS-детекторы CK Editor. Это связано с тем, что писать регулярное выражение для него может быть очень сложным, и вы можете очень легко сломать теги пополам и уничтожить свой сайт.

Что я сделал в качестве обходного пути, это то, что я сделал силовую пасту в виде обычного текста в редакторе CK.

+0

Как вы используете этот дезинфицирующее средство? – cmrichards

1

Вы не дали много информации, чтобы пойти прочь, но не быть слишком подозрительным, чтобы пытаться построить это регулярное выражение по своему усмотрению, прежде чем вы обращаетесь за помощью ...

Возьмите текст примера и вставьте его в Rubular в область тестовой строки и начните строить свое регулярное выражение. Он имеет большую быструю ссылку внизу.

1

Наткнулся через эту

http://gist.github.com/139987

, похоже, это требует sanitize камень.

+0

Удивительная находка! Я дам вам знать, как это происходит. Я не могу поверить, что вчера этого не нашел. – Trip

+0

Хм .. это не сработало. В основном потому, что они хотят, чтобы вы вручную вводили элементы, а MSWord - миллион. – Trip

Смежные вопросы