За последние 24 часа нас посетили 63033 программиста и 1752 робота. Сейчас ищут 1275 программистов ...

Помогите с xml_parser

Тема в разделе "Прочие вопросы по PHP", создана пользователем pr0n1x, 16 янв 2007.

  1. pr0n1x

    pr0n1x Активный пользователь

    С нами с:
    30 мар 2006
    Сообщения:
    486
    Симпатии:
    2
    Адрес:
    Киев
    Мне нужно причитать данные с RSS и ввести их в базу данных.

    Я с помощью curl получаю rss файл потом этот файл передаю xml_parser, но в самом RSS файле есть символы которые xml_parser не понимает и не хочет их обрабатывать. Вот например я встретит символ как русская буква "г" толь справа на лево перевернутая. И xml_parser не хочет его обрабатывать. Как можно избежать такой проблеммы?

    Кто не видел такую букву даю ссылку http://youtube.com/watch?v=YrJZLPQK35Y
    сразу сверху видео есть название ролика "galatasaray bayramı" так вот если посмотреть этот файл в блокноте то последняя буква будет выглядеть именно так.
     
  2. Anonymous

    Anonymous Guest

    В турецком языке i отличается от ı. Это разные буквы. Так что там скорее всего все в UTF-8. А как ты сохраняешь - неизвестно.
     
  3. pr0n1x

    pr0n1x Активный пользователь

    С нами с:
    30 мар 2006
    Сообщения:
    486
    Симпатии:
    2
    Адрес:
    Киев
    регистрирую функцию обработки символьных данных

    Код (Text):
    1. xml_set_character_data_handler($xml_parser, "readCharacter");
    Когда дело доходит до обраьотки строки "galatasaray bayramı" функция срабатывает и по идеи должно дальше парсить rss файл, но функция обратно обрататывает эту строчку уже 2-й раз, но уже не всю строку, а только то что идет после "galatasaray bayram" и вот из за этого происходит ошибка.

    То есть когда функция первый раз обрабатывает строку она возвращает строку "galatasaray bayram" без последнего символа и это строка вставляется в базу данных, а потом еще раз лезит обрабатывать эту строку.

    а на счет кодировки у меня создается обьект вот так:

    Код (Text):
    1. $xml_parser = xml_parser_create("UTF-8");
     
  4. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    xml_set_character_data_handler за раз забирает максимум 256 байт. Т.е. если длинна данных больше 256 байт, то ваш character_data_handler вызывается следующий раз со следующим куском <= 256 байт.