За последние 24 часа нас посетили 22194 программиста и 1683 робота. Сейчас ищут 1809 программистов ...

Str_Replace?

Тема в разделе "Прочие вопросы по PHP", создана пользователем murcom, 6 июн 2006.

  1. murcom

    murcom Активный пользователь

    С нами с:
    6 июн 2006
    Сообщения:
    62
    Симпатии:
    0
    Адрес:
    :адуктО
    Фунция str_replace(ereg_replace) никак не хочет менять pattern-ы. Если ввести просто "%ABC%", то всё работает, а если $options[$g_list], то не хочет.
    Что не так ? :?: :?: :?:

    Код (Text):
    1.  
    2. <?php
    3. session_start();
    4. $options=file('data\template.txt');
    5. foreach ($options as $option)
    6. {
    7.     $option=ltrim(rtrim($option));
    8.     echo strlen($option);
    9. }
    10. import_request_variables("GP", "g_");
    11.  
    12. if ( (isset($g_list))&& (isset($g_butt))  && (isset($g_templ))  )
    13. {
    14.     if ( (isset($g_list))&&(isset($options))&& (isset($g_templ)) &&( ($g_list>=0)&&($g_list<=(count($options)-1)) ) )
    15.     {
    16.         echo htmlspecialchars($options[$g_list])."<br>";
    17.         echo $g_templ."<br>";
    18.         $file_content=get_file_content('data\change_this.txt');
    19.         $file_content=str_replace($options[$g_list],$g_templ,$file_content);
    20.         echo htmlspecialchars($file_content)."<br>";
    21.         file_put_contents('data\change_this.txt',$file_content);
    22.  
    23.     }
    24. ?>
    25. //................//
    Содержимое template.txt:

    %ABC%
    %ACD%
    %CDE%
    %ACE%

    Содержимое change_this.txt:

    sdjafksdkfjaskfdjaksd%ABC%dfdlfklsfg
    fdgksdjfgl%ABC%%ACD%%CDE%fdsgsd23049
    gtpwerjojjwwege%abc%asfds3klkl%CDE%
    fgsdg%ACD%[/list]
     
  2. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Во-первых str_replace и ereg_replace несколько разные функции.
    Во-вторых выведи-таки $options на экран и посмотри все ли там так, как тебе нужно.
    Могу предположить, что мешают переносы \n в конце каждой строки.
     
  3. murcom

    murcom Активный пользователь

    С нами с:
    6 июн 2006
    Сообщения:
    62
    Симпатии:
    0
    Адрес:
    :адуктО
    Согласно функции Strlen длина options[...]==5 и тем более я, вроде, их удалял вначале ltrim , rtrim?
     
  4. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    PHP:
    1. foreach ($options as $option)
    2. {
    3.     $option=ltrim(rtrim($option));
    4.     echo strlen($option);
    5. }
    Хочу обратить внимание, что здесь обрабатывается option и выводится его длина, а в последствии работа происходит с элементами options.
     
  5. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    И что вообще символизируют g_list, g_but, g_templ?
     
  6. murcom

    murcom Активный пользователь

    С нами с:
    6 июн 2006
    Сообщения:
    62
    Симпатии:
    0
    Адрес:
    :адуктО
    Смотрим в хелп по PHP и видим что options изменится, т.к изменяется option. Разве это не так ?
    Код (Text):
    1.  
    2. <?php
    3. $arr = array(1, 2, 3, 4);
    4. foreach ($arr as &$value) {
    5.     $value = $value * 2;
    6. }
    7. // $arr is now array(2, 4, 6, 8)
    8. ?>
     
  7. murcom

    murcom Активный пользователь

    С нами с:
    6 июн 2006
    Сообщения:
    62
    Симпатии:
    0
    Адрес:
    :адуктО
    я все понял, там надо ссылку!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     
  8. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    murcom, там не нужна ссылка. Там нужен простой for по порядковому массиву.
    И можно даже не по всему вначале, а только в нужном месте выбрать и обработать нужный элемент.
     
  9. murcom

    murcom Активный пользователь

    С нами с:
    6 июн 2006
    Сообщения:
    62
    Симпатии:
    0
    Адрес:
    :адуктО
    Ну вобщем не знай и так пашет.
    ---
    Предупреждение: Относитесь уважительно к своему собеседнику.
    vb
     
  10. vb

    vb Активный пользователь

    С нами с:
    6 июн 2006
    Сообщения:
    911
    Симпатии:
    0
    Адрес:
    Saint-Petersburg
    murcom
    не зная oprions диагноз поставить не возможно.

    vasa_c прав если он использует PHP 4.*, потому как конструкция foreach ($arr as &$value); работает начиная с PHP 5

    $option=ltrim(rtrim($option));
    правильнее заменить на
    $option=trim($option);