Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Замена одной переменной.
 
 автор: sedek   (01.12.2004 в 20:10)   письмо автору
 
 

Подскажите ка сделать чтоб получив параметр п переменной заменялась только одна!
нужно если $id совпадает то заменяется только переменная $count
<?
$id 
= "SDAS";
    
$region = "Москва";
    
$count = "451";
    
$nick = "sedek";
    
$param = "";
    
$voc = "";
$fil = "about.txt";
  
$fd = @fopen($fil, "r");
    
$bufer = @fread($fd, filesize($fil));
    @
fclose($fd);
    
$bufer = preg_replace("|$id = [^ ]+ = [^ ]+ = [^\n]+|", "$id = $nick = $region = $count", $bufer);
    
$fd = @fopen($fil, "w");
    @
fwrite($fd,$bufer);
    @
fclose($fd);
?>

   
 
 автор: Akira   (01.12.2004 в 21:18)   письмо автору
 
   для: sedek   (01.12.2004 в 20:10)
 

Я бы посоветовал более подробно осветить проблему.

   
 
 автор: cheops   (01.12.2004 в 21:58)   письмо автору
 
   для: sedek   (01.12.2004 в 20:10)
 

Да действительно не очень понятно что должно получится...

   
 
 автор: sedek   (04.12.2004 в 02:33)   письмо автору
 
   для: cheops   (01.12.2004 в 21:58)
 

Вот скрипт!
<?
    $id 
= "SDSDA";
    
$region = "Москва";
    
$count = "43";
    
$master = "xchat";
    
$nick = "sedek";
    
$param = "";
    
$voc = "";
    
$status = "+";
    
$info = "Инфо о себе отсутствует!";
/*********Если такого в файле нет записываем**************/
    
$fil = "$master.txt";
   {
    
$fd = @fopen($fil, "r");
    
$bufer = @fread($fd, filesize($fil));
    @
fclose($fd);
    
$content = explode("\n",$bufer);
    
$flag = true;
    foreach(
$content as $value)
    {
      
preg_match("|^([^ ]+) = ([^ ]+) = ([^ ]+) = ([^ ]+) = ([^ ]+) = ([^\n]+)|i", $value, $matches);
     if(
$matches[1] == $id)
      {
        
$flag = false;
        
$current_id = $matches[1];
        
$current_nick = $matches[2];
        
$current_region = $matches[3];
        
$current_count = $matches[4];
        
$current_status = $matches[5];
        
$current_info = $matches[6];
      }
    }
    if(
$flag)
     {
       
$fd = @fopen($fil, "a");
       @
fwrite($fd,"$id = $nick = $region = $count = $status = $info\n");
       @
fclose($fd);
     }
     }
/************************Счётчик****************************/
    
$fil = "$master.txt";
    
$fd = @fopen($fil, "r");
    
$bufer = @fread($fd, filesize($fil));
    @
fclose($fd);
    
$bufer = preg_replace("|$id = [^ ]+ = [^ ]+ = [^ ]+ = [^ ]+ = [^\n]+|", "$id = $current_nick = $region = $count = $current_status = $current_info", $bufer);
    
$fd = @fopen($fil, "a");
    @
fwrite($fd,$bufer);
    @
fclose($fd);
?>

Проблема в том что нужно чтобы он ф файле находил строку в которой совпадает $id
и в этой строке он заменял $count на тот что принял и перезаписывал ! Вот у меня это счётчик но почемуто он не так делает он записывает с новой строки!

   
 
 автор: cheops   (04.12.2004 в 13:27)   письмо автору
 
   для: sedek   (04.12.2004 в 02:33)
 

А вы не могли бы файл так же хотя бы с двумя записями прикрепить.

   
 
 автор: sedek   (06.12.2004 в 02:25)   письмо автору
 
   для: cheops   (04.12.2004 в 13:27)
 

вот файл но я уже сделал теперь у меня другая проблемка!
мне нужно чтобы про поступлении команды out в param1 он находил строку в которой совпадает то что в $voc с matches[2] и заменял в этой строке matches[5] на out!
Вот примерно я сделал но чтото тут не так
<? 


if(preg_match("|^out$|i", substr($param,0,3)))
  {
    
$voc = preg_replace("|^[^ ]+ |", "", $voc);
    
$fd = @fopen($fil, "r");
    
$bufer = @fread($fd, filesize($fil));
    @
fclose($fd);
    
$content = explode("\n",$bufer);
    foreach(
$content as $value)
    {
      
preg_match("|^([^ ]+) = ([^ ]+) = ([^ ]+) = ([^ ]+) = ([^ ]+) = ([^\n]+)|i", $value, $matches);
     if(
$matches[2] == $voc)
      {
        
$out_id = $matches[1];
        
$out_nick = $matches[2];
        
$out_region = $matches[3];
        
$out_count = $matches[4];
        
$out_status = $matches[5];
        
$out_info = $matches[6];
      }
      }
        
$fd = @fopen($fil, "r");
        
$bufer = @fread($fd, filesize($fil));
        @
fclose($fd);
        
$bufer = preg_replace("|^([^ ]+) = $voc = ([^ ]+) = ([^ ]+) = ([^ ]+) = ([^\n]+)|", "$out_id = $voc = $out_region = $out_count = out = $out_info", $bufer);
        
$fd = @fopen($fil, "w");
        @
fwrite($fd, $bufer);
        @
fclose($fd);
        echo 
"yes";
        exit();
     }
?>

   
 
 автор: cheops   (06.12.2004 в 02:38)   письмо автору
 
   для: sedek   (06.12.2004 в 02:25)
 

Хм... я так понимаю это должно осуществляться функцией preg_replace? Тогда может её заменить следующим образом:
<?php
$bufer 
= preg_replace("|^([^ ]+) = $voc = ([^ ]+) = ([^ ]+) = ([^ ]+) = ([^\n]+)|", "\\1 = $voc = \\3 = \\4 = out = \\6", $bufer);
?>


http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=964

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования