Показать сообщение отдельно
  #10 (permalink)  
Старый 07.12.2012, 13:15
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Сообщение от zebra741258963 Посмотреть сообщение
Там может быть любая фраза которую впишет пользователь... К примеру:
<a onClick="x('Мама мыла раму')">Мама мыла раму</a>

и таких несколько сот строк.
Я просто не понимаю как я должен парсить текст чтобы недопустить ошибки.

На данный момент на момент ввода я:
1) Заменяю все символы "<" на &lt;
2) Удаляю одинарную и двойную кавычку, а также
&#0З4;
&#0З9;
&quоt;
&аpos;

я понимаю что коды \u0027 и \u0022 какраз в этом случае полностью безопасны.
А что ещё надо удалять?
1. Не повторяйте в html-коде одну и ту же текстовую строку два раза. Во-первых, это избыточно, во-вторых, имеете те проблемы, которые имеете. Любую строку можно получить в javascript-переменную не передавая её в виде параметра js-функции, а вынимая текст из html-элемента:
<html>
<body> 
<script>
function x(o)
{
var s = o.innerHTML;  
alert(s);  
};
</script>

<a onClick=x(this)>Мама ' мыла " раму - &#034 - &#039 </a>
</body>
</html>

2. "На данный момент на момент ввода я ... Заменяю все символы..."
Это плохо. После таких замен Вы столкнетесь с последующей проблемой хранения данных в базе данных и поиска по ней. А Вы же храните строки в базе? Например, слово Д'Артаньян в базе сохранится как Д&#039Артаньян, соответственно, поиск "Д'Артаньян" ничего не найдет.
Ответить с цитированием