За последние 24 часа нас посетили 34147 программистов и 1314 роботов. Сейчас ищут 927 программистов ...

<?![CDATA и что с этим делать?

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

  1. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    PHP:
    1. $cdata = <![CDATA[{"старт":"9,999.9 десять тысяч иен","техосмотр \"shaken\"":"29 год06 месяц","состояние":"ставка возможна","комплектация":"E Chocolatier","название машины":"Moco","топливо":"GS","оценка":"R","объем двигателя":"660cc","кондиционер":"AAC","оборудование":"PS PW ABS  подушка безопасности","коробка передач":"FAT","место проведения":"JU Okinawa  Okinawa префектура средний. уезд","количество проведений":"1523","пробег":"45 тысячkm","цвет":". .","год":"H22","Full model name":"Nissan &nbsp;  Moco MG22S-369522","конечный срок предложения цены":"2016-07-22 11:30","день проведения":"2016-07-22 12:30:"}]]>
    Прошу прощение за такой тупой вопрос... Но в первый раз знакомлюсь с этим тегом.
    В общем короче мне передают базу в проект, и там в базе есть вот такой контент в таком типа теге...
    Но как его разобрать не пойму попробовал парсингом xml не получилось... Найти как распарсить эту штуку я не нашёл, можно просто регуляркой это сделать, можно explode и состряпать массив, то что мне в принципе и нужно в результате получить имя и значение, и отдать во вью.

    Вопрос в принципе в другом есть ли на php функция, чтобы просто туда это засунуть и получить объектный массив, либо же просто массив ?

    Найти не смог...
     
  2. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Вытяни то что внутри квадратных скобок, а дальше это просто json строка.
    после декодирования имеет вид.
    Код (Text):
    1. object(stdClass)[6]
    2.   public 'старт' => string '9,999.9 десять тысяч иен' (length=38)
    3.   public 'техосмотр "shaken"' => string '29 год06 месяц' (length=22)
    4.   public 'состояние' => string 'ставка возможна' (length=29)
    5.   public 'комплектация' => string 'E Chocolatier' (length=13)
    6.   public 'название машины' => string 'Moco' (length=4)
    7.   public 'топливо' => string 'GS' (length=2)
    8.   public 'оценка' => string 'R' (length=1)
    9.   public 'объем двигателя' => string '660cc' (length=5)
    10.   public 'кондиционер' => string 'AAC' (length=3)
    11.   public 'оборудование' => string 'PS PW ABS  подушка безопасности' (length=50)
    12.   public 'коробка передач' => string 'FAT' (length=3)
    13.   public 'место проведения' => string 'JU Okinawa  Okinawa префектура средний. уезд' (length=65)
    14.   public 'количество проведений' => string '1523' (length=4)
    15.   public 'пробег' => string '45 тысячkm' (length=15)
    16.   public 'цвет' => string '. .' (length=3)
    17.   public 'год' => string 'H22' (length=3)
    18.   public 'Full model name' => string 'Nissan &nbsp;  Moco MG22S-369522' (length=32)
    19.   public 'конечный срок предложения цены' => string '2016-07-22 11:30' (length=16)
    20.   public 'день проведения' => string '2016-07-22 12:30:' (length=17)
    --- Добавлено ---
    http://stackoverflow.com/questions/6674322/how-to-get-values-inside-cdatavalues-using-php-dom
    Вот тема где это дело рассматривается.
     
    denis01 и askanim нравится это.
  3. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @mahmuzar ну как бы, да jsone обьект :D и вправду не дотупил чё то :D
    Чё то внатуре залагал.... xD Спасибо.
     
  4. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Вот прикол, в html выводит cdata а так не видит его :D Чё делать?
    --- Добавлено ---
    @mahmuzar А вот не получается не чего мне вытаскивать php не видит тега <![CDATA :D
    --- Добавлено ---
    вар дампом говорит мол тут строчка столько то символов, а выводить не через echo не через принт не хочет лол :D
     

    Вложения:

    • wtf.png
      wtf.png
      Размер файла:
      306,6 КБ
      Просмотров:
      8
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Смотри в отладчике или в исходном коде. Это скорее браузер игнорит, а не пхп. Какая ядру пыхпа разница, чего там у тебя в строчке? Единственное исключение - нулевой байт, поскольку многие строковые функции php транслируются на вызов соответствующих функций C, а там нулевым байтом конце строки отмечают.
     
    denis01 нравится это.
  6. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    PHP:
    1. $parsedDataRu =str_replace('<![CDATA[', '',  $value['parsed_data_ru']);
    2.                 $parsedDataRu =str_replace(']]>', '',  $parsedDataRu);
    3.                 //И
    4.                 $parse_ru = json_decode($parsedDataRu);
    5.                 echo '<pre>';
    6.                 print_r($parse_ru);
    7.                 echo '</pre>';
    Cделал так. Работает, чё то вчухнуть не могу, как одной функцией намутить вырезку.
    --- Добавлено ---
    ага preg_replace точно...
     
  7. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    LIBXML_NOCDATA
     
    [vs], askanim и denis01 нравится это.
  8. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    PHP:
    1. echo $content = simplexml_load_string(
    2.                     '<content>'.$value['parsed_data_ru'].'</content>'
    3.                     , null
    4.                     , LIBXML_NOCDATA
    5.                 );
    Да вот таким путём работает....
    --- Добавлено ---
    @runcore я видел, но не мог срастить почему не работает, нужно было подстроить под xml вариант. И тогда да работает, а что быстрее этот вариант или же простая замена строки?
     
  9. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    простая замена думаю быстрее. но оптимизацией нужно заниматься когда уже все написано и правильно работает.
    прездевременной оптимизацией лучше не заниматься. выйдет боком в итоге. проверено.
     
  10. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    можно ещё символы по краям отрезать, а то в json ещё может попасться, то что ищем для замены.
     
    askanim нравится это.
  11. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @denis01 Да наверно самое простое по символьно вырезать с начала и с конца.
     
    igordata нравится это.
  12. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    ссылку выше как раз поэтому я тебе давал.