“сложная” замена на php

Posted by: 3pc   
сентября 11,
2015

В основном возникают задачи из серии взять одно, заменить другим. Но что делать, когда необходимо не просто замена. А скажем взять то что нужно заменить, обработать и получившимся результатов заменить? Здесь на помощь приходит функция preg_replace_callback

в примере ниже, разбирается xml файл. сперва получаю массив из вхождений узла, затем в цикле прохожу по массиву, извлекая регулярным выражение соответствие, которое передается на обработку функции replace, после обработки функцией, соответствие заменяется результатом работы функции и записывается в файл.

<?php
$file = file_get_contents("example.xml");
preg_match_all("/<text[\w\W]*?<\/text>/", $file, $match_all);
function replace($repl){
$repl = urlencode($repl[0]);
$repl = "some text $repl more text";
$repl = base64_encode($repl);
return $repl;
}
for ($i = 0; $i <= count($match_all[0]); $i++){
$content = $match_all[0][$i];
$content = preg_replace_callback('/(?<=<url>).*?(?=<\/url>)/', "replace", $content);
file_put_contents("result.xml", $content, FILE_APPEND);
}
?>

таким образом можно использовать вложенные функции, использовать разные наборы данных получаемых из разных мест и т.д.

Похожие записи:

  1. MyArcadePlugin, делаем из lite, pro lite Для ворпресса существует неплохой плагин MyArcadePlugin, который позволяет на базе вп создать портал с играми, но у лайт версии есть...
  2. Подборка консольных команд Putty/SSH/Unix/Linux Будь мужиком © и освой несколько консольных команд линукса, которые значительно облегчат тебе жизнь. Только сильно не увлекайся, а то...
  3. Лучший браузер 2013 года Год близится к завершению и можно попробовать выявить лучший браузер этого года. Надеюсь обойдемся без холиваров, которые являются обязательными спутниками...
Эта запись опубликована в Пятница, 11 сентября, 2015 в 18:05.
Вы можете следить за этой записью через RSS 2.0.
Так же вы можете добавить комментарий, или trackback со своего сайта.

Добавить комментарий

Имя (обязательно)
Mail (обязательно)
URL
Текст комментария