[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Добавить запись в xml
grigor
Здравствуйте!
Проблема в следующем. Есть файл XML - кодировка UTF-8. Есть файл с формой кодировка win-1251. И, есть файл PHP:
<?php
$dom=new DomDocument();
$dom->load("plBooks.xml");
$book=$dom->createElement("book");

$name= $dom->createElement("name", $_POST ["name"]);
$content= $dom->createElement("content", $_POST ["content"]);
$bsize= $dom->createElement("bsize", $_POST ["bsize"]);
$bhref= $dom->createElement("bhref", $_POST ["bhref"]);

$book->appendChild ($name);
$book->appendChild ($content);
$book->appendChild ($bsize);
$book->appendChild ($bhref);

$dom->getElementsByTagName("books")->item(0)->appendChild ($book);
$dom->save("plBooks.xml");
header("Location:form.php");
?>


Что надо сделать, чтобы получаемые из формы данные конвертировать из win-1251 в UTF-8 для записи в файл XML



Спустя 4 часа, 10 минут, 30 секунд (1.02.2009 - 20:27) sad8c написал(а):
PHP
foreach ($_POST as $key=>&$val) {
    
$val iconv('windows-1251''utf-8'$val);
}


Но это просто для наглядности.
Лучше сначала получить набор НЕОБХОДИМЫХ полей из $_POST в какой-либо свой массив, и уже обрабатывать эти данные через foreach с передачей значения элемента в тело цикла по ссылке (&$val).
Причем, если эти данные приходят из формы, то лучше делать дополнительно trim, htmlspecialchars и strip_tags.

Спустя 1 день, 21 час, 50 минут, 16 секунд (3.02.2009 - 18:18) grigor написал(а):
sad8c. Спасибо за подсказку!

За это время просмотрел массу информации, узнал много интересного и как правило, запутался еще больше.
Теперь конкретно.
Добавил в выше приведенный скрипт такой код:

foreach ($_POST as $key=>&$val) {
$val1 = iconv('windows-1251', 'utf-8',$_POST ["name"]);
$val2 = iconv('windows-1251', 'utf-8', $_POST ["content"]);
$val3 = iconv('windows-1251', 'utf-8', $_POST ["bsize"]);
$val5 = iconv('windows-1251', 'utf-8', $_POST ["bhref"]);
}


Все заработало. Но, появился вопрос:"Зачем создавать массив, вытаскивая данные из $_POST, если и так все работает?"

Спустя 1 час, 3 минуты, 59 секунд (3.02.2009 - 19:22) Sylex написал(а):
grigor
м-да... очень интересная конструкция...

без комментариев

Спустя 2 часа, 22 минуты, 40 секунд (3.02.2009 - 21:44) grigor написал(а):
Понимаю что странная. Удивляться не надо, я знакомится с PHP начал лишь неделю назад.
Лучше подскажите, как это должно выглядеть.

А конструкция хоть и странная, но работает - "черт её побери".

Спустя 3 минуты, 21 секунда (3.02.2009 - 21:48) Sylex написал(а):
foreach просто убери, а тело цикла оставь

Спустя 2 минуты, 34 секунды (3.02.2009 - 21:50) kirik написал(а):
Если полей не много, то просто добавь обработку в создание элемента -
PHP
$name$dom->createElement("name"iconv('windows-1251''utf-8'$_POST ["name"]));

И послушай совета
Цитата (sad8c @ 1.02.2009 - 12:27)
Причем, если эти данные приходят из формы, то лучше делать дополнительно trim, htmlspecialchars и strip_tags.


Спустя 41 минута, 25 секунд (3.02.2009 - 22:32) grigor написал(а):
Спасибо всем уже все попробовал.
Отлично! Догадывался, что программирование занятная штука. Но это превосходит мои ожидания.
Обязательно почитаю о trim, htmlspecialchars и strip_tags.

Насчет кода выше. Я так понимаю, что с массивами и циклами - пока что то не до понял. Может подскажете, где почитать чтоб попроще (английского не знаю).

Спустя 5 минут, 52 секунды (3.02.2009 - 22:38) kirik написал(а):
Цитата (grigor @ 3.02.2009 - 14:32)
Может подскажете, где почитать чтоб попроще (английского не знаю).

Можно тут, или сам посмотри где понятнее будет smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.