Скажите пожалуйста как с помощью php создавать и редактировать
файлы в юникоде (или utf-8).
Весь день искал в инете. Кроме того, что нужно подключать mbstrin, так ничего и не понял.
Заранее благодарю.
Спустя 7 минут, 30 секунд (2.08.2010 - 11:03) Гость_Michael написал(а):
В файл записывай просто данные в кодировке utf-8. Если сам php файл в utf-8 - так сразу и пиши(т.к. строки уже будут в utf-8).
Любые строковые функции если потребуются - верно - из набора mb.
Если данные какие то не в utf-8 надо записать в файл, то перекодируй сначала функцией iconv.
Любые строковые функции если потребуются - верно - из набора mb.
Если данные какие то не в utf-8 надо записать в файл, то перекодируй сначала функцией iconv.
Спустя 2 минуты, 21 секунда (2.08.2010 - 11:05) Lenarfate написал(а):
в заголовке выставить charset="utf-8"
создать файл .htaccess в корне и написать в нем AddDefaultCharset UTF-8
mb_string - это библиотека для работы с мультибайтовыми кодировками. включается так:
в файле php.ini находите строки ;extension=php_mbstring.dll и убираете в начале точку с запятой
создать файл .htaccess в корне и написать в нем AddDefaultCharset UTF-8
mb_string - это библиотека для работы с мультибайтовыми кодировками. включается так:
в файле php.ini находите строки ;extension=php_mbstring.dll и убираете в начале точку с запятой
Спустя 1 минута, 35 секунд (2.08.2010 - 11:07) cx717 написал(а):
Lenarfate, А что делать, если php не utf-8?
Спустя 1 минута, 1 секунда (2.08.2010 - 11:08) Lenarfate написал(а):
header('Content-type="text/html", charset="utf-8"');
так же сказали выше, можно использовать функцию iconv()
так же сказали выше, можно использовать функцию iconv()
Спустя 3 минуты, 6 секунд (2.08.2010 - 11:11) cx717 написал(а):
Спасибо, сейчас попробую
Спустя 7 часов, 53 минуты, 17 секунд (2.08.2010 - 19:04) cx717 написал(а):
C юникодом более менее разобрался.
Возник немного другой вопрос.
Я создаю блокнотом файл xml.xml и ставлю ему кодировку utf-8.
Далее пишу скрипт:
$fh = fopen("xml.xml", "r") or die("Can't open file!");
$file = fread($fh, 2000);
print $file;
fclose($fh);
Что получаю:
п»ї company_profile contacts
Строка $file = fread($fh, filesize($fh)); не работает в принципе ( ругается на функцию filesize($fh) ).
Вопрос: возможно ли обойтись в данном случае без xml парсера, а просто
изменять xml файл (что-то удалять, что-то добавлять) по средствам mb функций ?
Ну и интересно почему filesize($fh) не проходит.
Заранее спасибо.
P.S.
xml.xml:
<?xml version="1.0"?>
<body>
<company_profile>
company_profile
</company_profile>
<contacts>
contacts
</contacts>
</body>
Возник немного другой вопрос.
Я создаю блокнотом файл xml.xml и ставлю ему кодировку utf-8.
Далее пишу скрипт:
$fh = fopen("xml.xml", "r") or die("Can't open file!");
$file = fread($fh, 2000);
print $file;
fclose($fh);
Что получаю:
п»ї company_profile contacts
Строка $file = fread($fh, filesize($fh)); не работает в принципе ( ругается на функцию filesize($fh) ).
Вопрос: возможно ли обойтись в данном случае без xml парсера, а просто
изменять xml файл (что-то удалять, что-то добавлять) по средствам mb функций ?
Ну и интересно почему filesize($fh) не проходит.
Заранее спасибо.
P.S.
xml.xml:
<?xml version="1.0"?>
<body>
<company_profile>
company_profile
</company_profile>
<contacts>
contacts
</contacts>
</body>
Спустя 35 минут, 43 секунды (2.08.2010 - 19:40) arvitaly написал(а):
filesize($fh)
не проходит потому что функция принимает путь к файлу, а не указатель на открытый файл
Можете залить сюда свой созданный файл?
Спустя 1 час, 37 минут, 34 секунды (2.08.2010 - 21:17) cx717 написал(а):
Спасибо всем за ответы, кое как разобрался.
Оказалось сначало бы разобраться надо с другим немного.
Есть файл в котором хранится русский и английский тексты.
Нужно что бы этот файл можно было редактировать.
Как я понял этот файл может быть xml и тогда надо писать xml парсер, читать
и писать в этот xml файл.
Либо просто с помощью регулярных выражений обрабатывать (читать
и писать) этот файл.
Я не силен в регулярных выражениях (возможно их возможностей и не хватит для поставленной задачи).
Подскажите плз в каком направлении думать?
Заранее благодарю.
Оказалось сначало бы разобраться надо с другим немного.
Есть файл в котором хранится русский и английский тексты.
Нужно что бы этот файл можно было редактировать.
Как я понял этот файл может быть xml и тогда надо писать xml парсер, читать
и писать в этот xml файл.
Либо просто с помощью регулярных выражений обрабатывать (читать
и писать) этот файл.
Я не силен в регулярных выражениях (возможно их возможностей и не хватит для поставленной задачи).
Подскажите плз в каком направлении думать?
Заранее благодарю.
Спустя 2 часа, 14 минут, 57 секунд (2.08.2010 - 23:32) arvitaly написал(а):
http://php.net/manual/en/book.xml.php
Там все просто
+ соответствующие функции (сам разберись уж)
Там все просто
// Создаем SAX парсер, который будет использоваться для
// обработки XML-данных.
$parser = xml_parser_create();
// Регистрируем функции для обработки различных типов
// XML-данных:
// - начальный и конечный тэги XML
xml_set_element_handler($parser,'saxStartElement','saxEndElement');
// - символьные данные
xml_set_character_data_handler($parser,'saxCharacterData');
// Также существуют аналогичные функции для регистрации
// обработчиков других типов XML-данных.
// Убираем case folding, в этом случае имена тэгов будут
// передаваться обработчикам в оригинальном виде. Если case
// folding включен, то все имена тегов будут переведены
// в верхний регистр.
xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,false);
// Получаем содержимое XML-файла с новостями.
$xml = join('',file('http://informer.gismeteo.ru/xml/27595_1.xml'));
// Производим парсинг (разбор) полученного XML-файла.
// В процессе разбора парсер будет вызывать описанные нами
// функции и в результате мы получим массив $news,
// содержащий новости из XML-файла.
if (!xml_parse($parser,$xml,true))
// Парсер возвращает значение FALSE, если произошла
// какая-либо ошибка. В этом случае мы также прекращаем
// выполнение скрипта и возвращаем ошибку.
/*die(sprintf('Ошибка XML: %s в строке %d',
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));*/
// Уничтожаем парсер, освобождая занятые им ресурсы
xml_parser_free($parser);
+ соответствующие функции (сам разберись уж)
Спустя 16 часов, 15 минут, 1 секунда (3.08.2010 - 15:47) cx717 написал(а):
Оказалось парсить ничего не нужно.
Вот такой код делает все в три строчки:
Остается вопрос: после выполнения последней строчки кода
в файле 'test.xml' все переносы строки заменяются на квадратики.
Как по вашему можно этого избежать?
Вот такой код делает все в три строчки:
$xml = Simplexml_load_file('test.xml');
$xml->book[1]->pages = 234;
$xml->asXML('test.xml');
Остается вопрос: после выполнения последней строчки кода
в файле 'test.xml' все переносы строки заменяются на квадратики.
Как по вашему можно этого избежать?
Спустя 3 часа, 5 минут, 17 секунд (3.08.2010 - 18:53) cx717 написал(а):
Понял, открывать редактором нормальным нужно xml.