Помогите подправить код,криво работает

Тема в разделе "PHP", создана пользователем grendmaster, 10 авг 2011.

Модераторы: latteo
  1. grendmaster

    grendmaster Постоялец

    Регистр.:
    21 апр 2010
    Сообщения:
    76
    Симпатии:
    2
    Привет всем,
    вот код
    PHP:
    $find[] = '.';
    $replace[] = ' $key_array[$i] ';
    $textgoto str_replace($find$replace$text);
    почему то вставляет не вывод переменной а саму эту переменную $key_array[$i] и второй вопрос как сделать чтобы не все точки заменялись а рандомно, rand(1,5) как приделать
     
  2. PHPCod3r

    PHPCod3r

    Регистр.:
    7 июн 2010
    Сообщения:
    261
    Симпатии:
    25
    Во первых, **х использовать массивы $replace[] $find[], вроде можно и строками обоитись?

    Во вторых в строках в одинарных кавычках, переменные не интерпалируются....

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

    в четвертых, из приведенных тобой 3 строк кода, совсем не ясно
    зачем ты хочешь прикрутить rand , так что давай выложи весь код
    а мы его доработаем )
     
  3. grendmaster

    grendmaster Постоялец

    Регистр.:
    21 апр 2010
    Сообщения:
    76
    Симпатии:
    2
    PHP только начал изучать и не знаю еще что нужно и правильней испльзовать поэтому и спрашиваю,что подправить в коде чтобы вставлялся вывод переменной,rand нужен чтобы ограничить кол-во вставок, и главное этот код в отличии от string_replace у меня работает
    вот весь код
    PHP:
    $key_array file('ПУТЬ_ДО_ПАПКИ_С_ФАЙЛОМ_КЕЕВ/key.txt');
    $count_key_array sizeof($key_array);
    for (
    $i=0$i<$count_key_array$i++) {
        
    $text file_get_contents('ПУТЬ_ДО_ПАПКИ_С_ТЕКСТАМИ/'.$i.'.txt');
    $find[] = '.';
    $replace[] = ' $key_array[$i] ';
    $textgoto str_replace($find$replace$text);   
    Часть кода подсказал Trooll

    Просто скажите плиз что не правильно в этой строке: $replace[] = ' $key_array[$i] ';
    и покажите как правильно
     
  4. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.036
    Симпатии:
    699
    ну как минимум ковычки одинарные убери
    PHP:
    $replace[] =  $key_array[$i] ;
     
    grendmaster нравится это.
  5. grendmaster

    grendmaster Постоялец

    Регистр.:
    21 апр 2010
    Сообщения:
    76
    Симпатии:
    2
    Спасибо кавычки убрал заработало,но нарушилась сама перемення,то есть она теперь не делает то что должна,ее вывод должен меняться а сейчас он постоянный
     
  6. PHPCod3r

    PHPCod3r

    Регистр.:
    7 июн 2010
    Сообщения:
    261
    Симпатии:
    25
    А что находится в
    'ПУТЬ_ДО_ПАПКИ_С_ФАЙЛОМ_КЕЕВ/key.txt'
    'ПУТЬ_ДО_ПАПКИ_С_ТЕКСТАМИ/'.$i.'.txt'

    ?
     
  7. grendmaster

    grendmaster Постоялец

    Регистр.:
    21 апр 2010
    Сообщения:
    76
    Симпатии:
    2
    в каком смысле что там находится?
    как rand() добавить подскажите,
     
  8. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.036
    Симпатии:
    699
    ну по видимомму в key.txt ключи в $i.txt тексты и я так понимаю точки в текстах должны заменяться на рандомный ключ? не совсем понятно куда надо прикрутить rand() к ключам или к точкам?
     
  9. grendmaster

    grendmaster Постоялец

    Регистр.:
    21 апр 2010
    Сообщения:
    76
    Симпатии:
    2
    Rand() нужно прикрутить к точкам,чтобы не все точки заменялись а одна считая с начала,и не на рандомный ключ а на тот который в данный момент находится в

    $key_array[$i]
     
  10. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.036
    Симпатии:
    699
    тогда так
    PHP:
    <?php
    $key_array 
    file('ПУТЬ_ДО_ПАПКИ_С_ФАЙЛОМ_КЕЕВ/key.txt');
    $count_key_array count($key_array);
    for (
    $i=0$i<$count_key_array$i++) {
    $text file_get_contents('ПУТЬ_ДО_ПАПКИ_С_ТЕКСТАМИ/'.$i.'.txt');
    $find ="/\./"
    $replace $key_array[$i];
    $textgoto preg_replace($find$replace$text,1); 
    }
     
    grendmaster нравится это.