|
|
|
| Подскажите ка сделать чтоб получив параметр п переменной заменялась только одна!
нужно если $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);
?>
|
| |
|
|
|
|
|
|
|
для: sedek
(01.12.2004 в 20:10)
| | Я бы посоветовал более подробно осветить проблему. | |
|
|
|
|
|
|
|
для: sedek
(01.12.2004 в 20:10)
| | Да действительно не очень понятно что должно получится... | |
|
|
|
|
|
|
|
для: 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 на тот что принял и перезаписывал ! Вот у меня это счётчик но почемуто он не так делает он записывает с новой строки! | |
|
|
|
|
|
|
|
для: sedek
(04.12.2004 в 02:33)
| | А вы не могли бы файл так же хотя бы с двумя записями прикрепить. | |
|
|
|
|
|
|
|
для: 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();
}
?>
|
| |
|
|
|
|
|
|
|
для: 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 | |
|
|
|