Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2017, 21:58   #1
wizand
Новичок
Джуниор
 
Регистрация: 05.05.2017
Сообщений: 2
По умолчанию замена текста в xml - PHP

Добрый день!

Подскажите, почему этот скрипт не работает:


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'$resultLOCK_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>

Сейчас возвращается ошибка "Не удалось прочитать файл с заменами"
wizand вне форума Ответить с цитированием
Старый 05.05.2017, 22:10   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну дык видимо путь неправильный, причем тут XML.

Вообще использовать регекспы для этого плохая идея, наверняка столкнетесь с кучей проблем. Возьмите какую-нибудь библиотеку для парсинга XML.
например стандартные simplexml, DomDocument
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 06.05.2017, 06:58   #3
wizand
Новичок
Джуниор
 
Регистрация: 05.05.2017
Сообщений: 2
По умолчанию

Да, путь действительно неправильный, исправил, ошибка не появляется, новый файл создается, но замены не происходит
wizand вне форума Ответить с цитированием
Старый 06.05.2017, 10:20   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от wizand Посмотреть сообщение
но замены не происходит
Значит, неправильно составлено регулярное выражение.
Тестируй его через preg_match.
Поиск ошибок
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск и замена текста PHP (массивы) flexx123 Помощь студентам 2 01.05.2014 17:52
Замена текста. Nando Microsoft Office Excel 3 20.03.2014 12:48
замена текста evdss Microsoft Office Excel 6 15.01.2013 10:23
Замена части строки в XML artemavd Общие вопросы Delphi 7 21.08.2010 21:29
замена текста zetrix Microsoft Office Excel 0 31.10.2006 07:54