Добрый день! Подскажите, почему этот скрипт не работает: PHP: $Replacement = file('zamena.txt'); // содержит "<category id="3" parentId="0">3</category><category id="4" parentId="0">4</category>" if ($Replacement===false) { echo 'Не удалось прочитать файл с заменами'; $Replacement = array(); } $text = file_get_contents('source.xml'); $result = preg_replace_callback('~(<categories>)([^<]+)(</categories>)~i', 'my_replace_callback', $text); file_put_contents('result.xml', $result, LOCK_EX); function my_replace_callback($m) { global $Replacement; static $Index = 0; if (isset($Replacement[$Index])) $m[2] = htmlspecialchars($Replacement[$Index]); $Index++; return $m[1] . $m[2] . $m[3]; } Есть файл source.xml, в нем в теге <categories></categories> находятся 20000 категорий с названиями. HTML: <categories></categories><category id="1" parentId="0">1</category> <category id="2" parentId="0">2</category></categories> Мне нужно, чтобы скрипт в этом файле вместо содержимого <categories></categories>, вставлял другое содержимое (20-30 категорий) из тестового файла zamena.txt, тоже в <categories></categories> Сейчас возвращается ошибка "Не удалось прочитать файл с заменами"
Да, путь действительно неправильный, исправил, ошибка не появляется, новый файл создается, но замены не происходит
А это уже другое. Регулярка неправильная, поскольку наверняка внутри <categories /> есть вложенные теги, а ты пишешь регулярку, чтоб там не было <. Вообще, с XML надо работать как с XML, а не как с текстом. Т.е. расширениями SimpleXML, DOM и т.п. --- Добавлено --- Кстати, в приведённом в первом посте XML бред написан, он некорректен, поскольку <categories> два раза закрывается, а открыт только один раз.