xml замена значений ключа

Тема в разделе "Как сделать...", создана пользователем SocMaster, 1 дек 2013.

  1. SocMaster

    SocMaster aka Hakerok

    Регистр.:
    26 июл 2011
    Сообщения:
    202
    Симпатии:
    47
    У меня есть вот такой xml
    <item id="wz_music_admin_inc_php_1"><![CDATA[запрещенная операция]]></item>
    Я принимаю скриптом ключ wz_music_admin_inc_php_1 и новое значения. Подскажите как мне после импорта файла xml в скрипт заменять там значения? И сохранять оригинальный файл но с новыми значениями, то есть там не только такие поля..
     
  2. Darkmind

    Darkmind SNMP maniac

    Регистр.:
    31 май 2006
    Сообщения:
    182
    Симпатии:
    74
    Подход 1. Идеологически верный.
    - Принимаем файл
    - Парсим его, как DOMDocument, получая объект
    - Обходим полученное дерево, меняем значение, перезаписываем файл

    Подход 2. В лоб.
    - Принимаем файл
    - Делаем file_get_contents()
    - Меняем подстроку
    PHP:
    $result preg_replace('%^(<item.+wz_music_admin_inc_php_1.+!\[CDATA\[)запрещенная операция(\]\]></item>)$%im''$1новое значение$2'$subject);
    - Регулярку, скорее всего, придётся модифицировать под конкретный файл, но идею я передал.
    - Записываем file_put_contents()

    Cons and Pros
    Второй способ быстрее и выполняется чуть ли не в виде маленького консольного приложения, но могут быть подводные камни, если исходный XML файл сменит формат. Парсить XML и подменять значение - более гибкий процесс и страхует от всяких нежданчиков, но сам скрипт получится существенно сложнее. Особенно, если до этого не доводилось работать с DOM (Document Object Model).
     
    SocMaster нравится это.
  3. volk445

    volk445 Писатель

    Регистр.:
    18 дек 2013
    Сообщения:
    1
    Симпатии:
    0
    тоже помогло