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

Форум 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