Можно ли использовать PEAR SearchReplace для замены текста в файле .php? - PullRequest
0 голосов
/ 24 сентября 2011

Я наткнулся на этот простой учебник по груше: http://www.codediesel.com/php/search-replace-in-files-using-php/

include 'File/SearchReplace.php' ;

$files_to_search = array("fruits.txt") ;
$search_string  = "apples";
$replace_string = "oranges";

$snr = new File_SearchReplace($search_string,
                          $replace_string,
                          $files_to_search,
                          '', // directorie(s) to search
                          false) ;

$snr->doSearch();

echo "The number of replaces done : " . $snr->getNumOccurences();

Автор использует в качестве примера файл fruits.txt.

Я бы хотел выполнить поиск и заменить файл .php.

По сути, я пытаюсь достичь этого:

При взаимодействии с пользователем открывается index.php,

$promoChange = "%VARYINGTEXT%";

ищется и заменяется на

$promoChange = "$currentYear/$currentPromotion";

Переменные $current будут различаться, поэтому необходимо менять слова только между "".

Кто-нибудь знает, как можно выполнить задачу такого типа?

Если кто-нибудь знает какие-либо учебные пособия, относящиеся к этому предмету, это тоже будет с благодарностью.

Спасибо!

  • У меня есть все остальное, что касается шаблона и взаимодействия с пользователем, у меня просто возникают проблемы, пытаясь решить, как выполнить этот тип поиска и замены. Я понимаю, как это должно быть сделано, поскольку я сделал что-то похожее, используя Visual Basic. Но я начинаю с того, что мой ответ на это будет perl? Я надеюсь, что это не так ...

Хорошо, моя проблема частично решена с помощью этого:

// Define result of Activate click
if (isset($_POST['action']) and $_POST['action'] == 'Activate')
{   
include ''.$docRoot.'/includes/pear/SearchReplace.php' ;
$files = array( "$docRoot/promotions/index.php" ) ;
$snr = new File_SearchReplace( '$promoChange = "";', '$promoChange = "'.$currentYear.'/'.$currentPromotion.'";', $files) ;
$snr -> doSearch() ;
}

но как мне заставить его искать и заменять что-то вроде $ promoChange = "%VARYINGTEXT%";

Обнаружено и заменено "" текущими значениями сеанса. Но теперь, когда это изменилось, мне нужно его заменить и добавить текст между «И».

Есть идеи у кого-нибудь?

Ответы [ 2 ]

1 голос
/ 24 сентября 2011

Если вам нужно адаптировать только один файл, сделайте это вручную:

$src = file_get_contents($fn = "script.php");
$src = str_replace('"%VARYINGTEXT%"', '"$currentYear/$currentPromotion"', $src);
file_put_contents($fn, $src);

str_replace достаточно для вашего случая.

0 голосов
/ 24 сентября 2011

С какой стати ты хочешь сделать что-то подобное? Фреймворки, такие как PHP, существуют исключительно на основе отсутствия необходимости писать страницу для каждого отдельного представления одного и того же взаимодействия. Что плохого в том, чтобы просто включить страницу PHP, которую вы сейчас хотите изменить, и установить соответствующие переменные перед ее вызовом?

Ontopic: Я не понимаю, почему то, что вы делаете, является проблемой, чисто технически. Это можно сделать с помощью PHP. Но на самом деле, вы не должны.

...