Фунция str_replace(ereg_replace) никак не хочет менять pattern-ы. Если ввести просто "%ABC%", то всё работает, а если $options[$g_list], то не хочет. Что не так ? :?: :?: :?: Код (Text): <?php session_start(); $options=file('data\template.txt'); foreach ($options as $option) { $option=ltrim(rtrim($option)); echo strlen($option); } import_request_variables("GP", "g_"); if ( (isset($g_list))&& (isset($g_butt)) && (isset($g_templ)) ) { if ( (isset($g_list))&&(isset($options))&& (isset($g_templ)) &&( ($g_list>=0)&&($g_list<=(count($options)-1)) ) ) { echo htmlspecialchars($options[$g_list])."<br>"; echo $g_templ."<br>"; $file_content=get_file_content('data\change_this.txt'); $file_content=str_replace($options[$g_list],$g_templ,$file_content); echo htmlspecialchars($file_content)."<br>"; file_put_contents('data\change_this.txt',$file_content); } ?> //................// Содержимое template.txt: %ABC% %ACD% %CDE% %ACE% Содержимое change_this.txt: sdjafksdkfjaskfdjaksd%ABC%dfdlfklsfg fdgksdjfgl%ABC%%ACD%%CDE%fdsgsd23049 gtpwerjojjwwege%abc%asfds3klkl%CDE% fgsdg%ACD%[/list]
Во-первых str_replace и ereg_replace несколько разные функции. Во-вторых выведи-таки $options на экран и посмотри все ли там так, как тебе нужно. Могу предположить, что мешают переносы \n в конце каждой строки.
PHP: foreach ($options as $option) { $option=ltrim(rtrim($option)); echo strlen($option); } Хочу обратить внимание, что здесь обрабатывается option и выводится его длина, а в последствии работа происходит с элементами options.
Смотрим в хелп по PHP и видим что options изменится, т.к изменяется option. Разве это не так ? Код (Text): <?php $arr = array(1, 2, 3, 4); foreach ($arr as &$value) { $value = $value * 2; } // $arr is now array(2, 4, 6, 8) ?>
murcom, там не нужна ссылка. Там нужен простой for по порядковому массиву. И можно даже не по всему вначале, а только в нужном месте выбрать и обработать нужный элемент.
murcom не зная oprions диагноз поставить не возможно. vasa_c прав если он использует PHP 4.*, потому как конструкция foreach ($arr as &$value); работает начиная с PHP 5 $option=ltrim(rtrim($option)); правильнее заменить на $option=trim($option);