Вопрос по Php

Discussion in 'PHP' started by AoD, 11 Aug 2006.

  1. AoD

    AoD Elder - Старейшина

    Joined:
    10 Feb 2006
    Messages:
    29
    Likes Received:
    11
    Reputations:
    2
    Ребят как на PHP в файле заменить один символ на другой.

    То есть, открываем файл, ищем нужные символы, например (ttt) заменяем их на (zzz) и закрываем файл.
     
  2. em00s7

    em00s7 Elder - Старейшина

    Joined:
    2 May 2006
    Messages:
    169
    Likes Received:
    37
    Reputations:
    -10
    Напимер если твои симоволы на 1 строчке то :
    <?
    $i = file("1.txt"); // твой файл
    $i[0] = str_replace("ttt","zzz",$i[0]);
    echo $i[0];
     
    #2 em00s7, 11 Aug 2006
    Last edited: 11 Aug 2006
  3. Trinux

    Trinux Members of Antichat

    Joined:
    26 Nov 2004
    Messages:
    1,403
    Likes Received:
    296
    Reputations:
    364
    http://www.php.net/manual/ru/function.str-replace.php
    http://www.php.net/manual/ru/function.preg-replace.php
    http://www.php.net/manual/ru/function.ereg-replace.php
    http://www.php.net/manual/ru/function.eregi-replace.php
     
    _________________________
  4. AoD

    AoD Elder - Старейшина

    Joined:
    10 Feb 2006
    Messages:
    29
    Likes Received:
    11
    Reputations:
    2
    Ребят функции замены я знаю. Наверное, неправильно поставил вопрос.

    Меня не интересует замена в переменной. Меня интересует замена в файле. То есть, находим символ в файле, смещаем туда указатель и меняем на то, что нужно. Желательно привести пример в коде.

    Code:
    <?php
    $filepathstat = "temp02"; // файл для работы
    $filepathopen = fopen($filepathstat,"a+"); // открываем на чтение и на запись
    $zamenit = aaa //символы которые необходимо заменить
    
      while(!feof($filepathopen)) 
       {
       $string = fgets($filepathopen); // читаем файл построчно
         if(ereg($zamenit,$string)) // если в строке найдена (aaa) то условие выполняется
         {
         $editstring=ereg_replace($zamenit, "ttt", $string); // находим и заменяем
         fputs($filepathopen,$editstring); // пишим изменённую строку в файл
         }
       }
    fclose($filepathopen); // закрываем файл
    ?>
    
    Дык вот в самом файле в итоге замены нет. А изменённую строку он дописывает в конец файла.
     
    #4 AoD, 11 Aug 2006
    Last edited: 11 Aug 2006
  5. link.

    link. Elder - Старейшина

    Joined:
    15 May 2005
    Messages:
    47
    Likes Received:
    3
    Reputations:
    0
    PHP:
     $text 'aaa';  // что меняем 
     
    $retext 'ttt'// на что меняем
     // Читаем содержиоме файла 
     
    $content file_get_contents("temp02"); 
     
    // Заменяем 
     
    $content str_replace($text$retext$content);  
     
    // Перезаписываем файл 
     
    $fd fopen("temp02""w"); 
     if(
    $fd
     { 
        
    fwrite($fd$content); 
        
    fclose($fd); 
     } 
    попробуй так
     
    1 person likes this.
  6. Ch3ck

    Ch3ck Elder - Старейшина

    Joined:
    9 Jun 2006
    Messages:
    1,362
    Likes Received:
    1,157
    Reputations:
    430
    Хм, а не проще будет засунуть всё в file типо вот так:
    $fp=file(\"test.txt\");
    foreach($fp AS $v)
    {
    $v=str_replace(\"\\r\",\'\',$v);
    $v=str_replace(\"\\n\",\'\',$v);
    if(тут твоё условие сравнение строк)
    }
    НА мой взгляд так удобнее. ДА и не только удобнее-бесспорно лучше... :cool:
     
    1 person likes this.
  7. AoD

    AoD Elder - Старейшина

    Joined:
    10 Feb 2006
    Messages:
    29
    Likes Received:
    11
    Reputations:
    2
    Всем спосибо помогли. Тему можно закрывать!