Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр 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($fdfilesize($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($fdfilesize($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($fdfilesize($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($fdfilesize($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($fdfilesize($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 Яндекс.Метрика Яндекс цитирования