Вам нужно изменить свое регулярное выражение, чтобы включить дополнительные пробелы перед This
и <
, тогда вы можете использовать атрибут groups
:
some_match = re.match(r"\s*\#?\s*\w*\s*(\<)+\s*(?P<method>\w+)\s*(\>)+\w*", "# This <foo> truc")
some_match.groups()
('<', 'foo', '>')
some_match.groups(1)
'foo'
Вы не были должны HTML - кодировать данные при записи этого в datastorage - тот способ, которым Вы могли использовать свои данные также для чего-то еще (например, электронные письма, документы в формате PDF и так далее). Как Assaf, уже сказанный: это обязательно для предотвращения Внедрений SQL путем выхода из входа или использования параметризованных запросов на вставку.
Вы должны, нет, скажем, должен однако, HTML - кодирует Ваши данные при показе его на странице HTML! Это представит опасный HTML или код JavaScript, бесполезный, поскольку HTML-тэги, существующие в данных, не будут больше распознаваться как HTML-тэги браузером.
Процесс немного более сложен, когда Вы позволите пользователям отправлять данные с HTML-тэгами внутри. Затем необходимо пропустить выходное кодирование в пользу очистки входа, которая может быть произвольным комплексом в зависимости от потребностей (позволенный теги, например).
Используйте mysql_real_escape_string ():
$safetext = mysql_real_escape_string($_POST['text']);
$query = "INSERT INTO my_table (`my_field`) VALUES ('$safetext')";
mysql_query($query);
Это должно работать.
Следующее должно работать:
if (get_magic_quotes_gpc()) {
$content = stripslashes($content);
}
$content = mysql_real_escape_string($content);
Если Ваш столбец является utf8, у Вас не должно быть проблем со специальными символами. После того как Вы отформатировали содержание правильно, можно подать его к mysql использование стандартных методов вставки.
Вы не должны кодировать его для хранения его в mysql.
Убедитесь, что Вы используете параметризованную команду вставки, для предотвращения Внедрения SQL.
Чтобы правильно сохранить пользовательский текст в дополнение к форматированию, все, что вам нужно сделать, это преобразовать все символы новой строки в разрывы с помощью nl2br ($ inputtext)
. Сделайте это после фильтрации ввода.