За последние 24 часа нас посетили 15725 программистов и 1666 роботов. Сейчас ищут 762 программиста ...

SimpleXMLElement и русские имена параметров

Тема в разделе "PHP для новичков", создана пользователем inline, 29 ноя 2016.

  1. inline

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

    С нами с:
    21 май 2010
    Сообщения:
    466
    Симпатии:
    0
    Есть xml
    Имена
    русскими буквами
    Так вот SimpleXMLElement это "кодирует" в

    а как чтобы ключики массива были русскими словами как в xml ?
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Атрибуты вытаскиваются отдельно. simpleXML возвращает объект, а не массив. Просмотрите его под var_dump, поймете, как вам вытащить то, что вас интересует. Увы, без ручной обработки результата не обойтись. Хотите 100% автоматическую перегонку массива в серию и обратно - юзайте JSON.
     
  3. inline

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

    С нами с:
    21 май 2010
    Сообщения:
    466
    Симпатии:
    0
    не совсем понимаю как тут JSON применить
     
  4. inline

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

    С нами с:
    21 май 2010
    Сообщения:
    466
    Симпатии:
    0
    ["param"]=>
    array(4) {
    [0]=>
    string(14) "Мужской"
    [1]=>
    string(12) "черный"
    [2]=>
    string(2) "98"
    [3]=>
    string(3) "102"
    }

    не хочет руских ключей делать
     
  5. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Ну...во-первых у вас имена атрибутов не на русском. Во вторых, у вас эти ключи хранятся в атрибутах. То, что вы атрибут name="Размер" прописали, не значит, что оно должно name как ключ использовать. Это для вас там name, а для XML - последовательность из 4 символов. Там может быть хоть name, хоть qweqrdfassda. Это просто ключ параметра. Вы должны сами его значение из полученного объекта выташить, и сами использовать как ключ. И, в итоге, сформировать массив. Да, самостоятельно. Кнопки "сделай хорошо" не существует.

    Тут - никак. Но на будущее - хотите хранить структурированно сериализованные массивы? Храните их в JSON.
     
  6. inline

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

    С нами с:
    21 май 2010
    Сообщения:
    466
    Симпатии:
    0
    В смысле регуляркой весь xml разобрать?
     
  7. inline

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

    С нами с:
    21 май 2010
    Сообщения:
    466
    Симпатии:
    0
    DOM XML сможет решить проблему?
    --- Добавлено ---
    или другая библиотека
     
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Да при чем тут регулярка-то? Неужто так тяжело по массиву объектов пройтись и повытаскивать нужные данные из него?
     
  9. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    Тяжело! Кнопка "бабло" от партнерок должна быть уже в массиве!
     
  10. inline

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

    С нами с:
    21 май 2010
    Сообщения:
    466
    Симпатии:
    0
    так после simplxml ключи массива стают числовыми
     
  11. inline

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

    С нами с:
    21 май 2010
    Сообщения:
    466
    Симпатии:
    0
    через var_dump вижу

    ["param"]=>
    array(4) {
    [0]=>
    string(14) "Мужской"
    [1]=>
    string(12) "черный"
    [2]=>
    string(2) "98"
    [3]=>
    string(3) "102"
    }

    а должно быть


    ["param"]=>
    array(4) {
    ["Пол"]=>
    string(14) "Мужской"
    ["Цвет"]=>
    string(12) "черный"
    ["Размер"]=>
    string(2) "98"
    ["Размер"]=>
    string(3) "102"
    }
     
  12. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Должно? Делайте. Я не знаю, что вам еще сказать. Вы категорически не хотите меня слышать.
    Эти ваши "русские ключи" с точки зрения XML - не ключи, а просто значения атрибутов.
    Доступ к атрибутам осуществляется так: https://php.net/manual/ru/simplexmlelement.attributes
     
    inline нравится это.
  13. inline

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

    С нами с:
    21 май 2010
    Сообщения:
    466
    Симпатии:
    0
    то что нужно
    я просто Вас сразу не понял
    --- Добавлено ---
    спасибо!
     
  14. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Ну и славненько :)