Python-код для удаления пустой строки из CSV-файла без создания другого файла.
def ReadWriteconfig_file (файл):
try:
file_object = open(file, 'r')
lines = csv.reader(file_object, delimiter=',', quotechar='"')
flag = 0
data=[]
for line in lines:
if line == []:
flag =1
continue
else:
data.append(line)
file_object.close()
if flag ==1: #if blank line is present in file
file_object = open(file, 'w')
for line in data:
str1 = ','.join(line)
file_object.write(str1+"\n")
file_object.close()
except Exception,e:
print e
htmlentities
и htmlspecialchars
используются для генерации вывода HTML , который отправляется в браузер.
Подготовленные операторы используются для генерировать / отправлять запросы к ядру базы данных .
Оба позволяют экранировать данные; но они не убегают для того же использования.
Итак, нет, подготовленные операторы (для запросов SQL) не мешают вам правильно использовать htmlspecialchars
/ htmlentities
(для генерации HTML)
О strip_tags
: удаляет теги из строки, а htmlspecialchars
преобразует их в объекты HTML.
Эти две функции не делают одно и то же; вы должны выбрать, какой из них использовать, в зависимости от ваших потребностей / того, что вы хотите получить.
Например, с помощью этого фрагмента кода:
$str = 'this is a <strong>test</strong>';
var_dump(strip_tags($str));
var_dump(htmlspecialchars($str));
Вы получите такой результат:
string 'this is a test' (length=14)
string 'this is a <strong>test</strong>' (length=43)
В первом случае, без тега; во втором - правильно экранированные.
И с выводом HTML:
$str = 'this is a <strong>test</strong>';
echo strip_tags($str);
echo '<br />';
echo htmlspecialchars($str);
Вы получите:
this is a test
this is a <strong>test</strong>
Какой из них вам нужен? Это важный вопрос ; -)
Ничего не меняется для htmlspecialchars ()
, потому что это для HTML, а не для SQL. Вам по-прежнему нужно правильно экранировать HTML, и лучше сделать это, когда вы действительно генерируете HTML, а не привязываете его как-то к базе данных.
Если вы используете подготовленные операторы, тогда вам не понадобится mysql_ [ real_] escape_string ()
больше (при условии, что вы придерживаетесь заполнителей подготовленных операторов и сопротивляетесь искушению обойти это с помощью манипуляций со строками).
Если вы хотите избавиться от htmlspecialchars ()
, тогда существуют механизмы создания шаблонов HTML, которые работают аналогично подготовленным операторам в SQL и избавляют вас от необходимости экранировать все вручную, например PHPTAL .
Вам не нужны htmlentities () или htmlspecialchars () при вставке материала в базу данных, ничего плохого не произойдет, вы не будете уязвимы для SQL-инъекции, если используете подготовленные операторы. Хорошо, что теперь вы сохраните исходный пользовательский ввод в своей базе данных.
Вам НЕОБХОДИМО экранировать данные при выводе и отправлять их обратно клиенту, - когда вы извлекаете данные из базы данных, иначе вы будете уязвим для атак межсайтового скриптинга и других неприятностей. Вам нужно будет экранировать их для нужного вам формата вывода, например html, поэтому вам все равно понадобятся htmlentities и т. Д.
По этой причине вы можете просто избегать вещей, когда вы помещаете их в базу данных, а не когда вы их выводите - однако вы потеряете исходное форматирование пользователя и избежите использования данных для html, что может не окупиться, если вы используете данные в разных форматах вывода.
Я бы все равно был склонен кодировать HTML. Если вы создаете какую-либо форму CMS или веб-приложения, проще сохранить его как закодированный HTML, а затем перекодировать по мере необходимости.
Например, при переносе информации в TextArea, измененную TinyMCE, они рекомендуют, чтобы HTML должен быть закодирован - поскольку спецификация HTML не допускает HTML внутри текстовой области.
Я бы также strip_tags ()
из любого места, где вам не нужен HTML-код.