Подскажите, почему этот скрипт не работает:
$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 категорий с названиями.