Проблема в следующем. Есть файл 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) { |
Но это просто для наглядности.
Лучше сначала получить набор НЕОБХОДИМЫХ полей из $_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, если и так все работает?"
За это время просмотрел массу информации, узнал много интересного и как правило, запутался еще больше.
Теперь конкретно.
Добавил в выше приведенный скрипт такой код:
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.
Насчет кода выше. Я так понимаю, что с массивами и циклами - пока что то не до понял. Может подскажете, где почитать чтоб попроще (английского не знаю).
Отлично! Догадывался, что программирование занятная штука. Но это превосходит мои ожидания.
Обязательно почитаю о trim, htmlspecialchars и strip_tags.
Насчет кода выше. Я так понимаю, что с массивами и циклами - пока что то не до понял. Может подскажете, где почитать чтоб попроще (английского не знаю).
Спустя 5 минут, 52 секунды (3.02.2009 - 22:38) kirik написал(а):
Цитата (grigor @ 3.02.2009 - 14:32) |
Может подскажете, где почитать чтоб попроще (английского не знаю). |