Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Обработка логов сайта


Автор: IZ@TOP 2.4.2003, 19:25
Такой вопрос: Как мне разбить такую вот строку -
имя:значение|имя:значение|имя:значение|имя:значение|имя:значение|имя:значение|имя:значение| (где ":" разделяет имя и значение, а "|" разделитель между неким количеством имя значение)
Необходимо создать массив с переменными(имя) которые содержат в себе информацию(значение) notify.gif

Автор: y.s.grin 2.4.2003, 20:39
explode()

Автор: IZ@TOP 2.4.2003, 21:01
И как это ? Я знаю только как имя значение разделить - explode("|",$str ...);

Автор: BlackWolf 2.4.2003, 21:19
не знаю зачем разбивать на массив может это действительно надо, потому что если тебе потом нужно вытащить только значение одной переменной то можно просто искать в строке вот такую подстроку "переменная:" и потом забрать все что стоит после ":", но до "|".

Автор: IZ@TOP 2.4.2003, 22:54
А как?Как это сделать? С помощью какой функции(жел. пример)

Автор: Loquacious 2.4.2003, 22:56
Iz@top, мдям... вроде книжек много умных, а толку мало sad.gif Страный ты какой!

Автор: Mark.dll 2.4.2003, 15:55
Код
$stuff=explode("|", $string);

Ещё есть функция split(). Вот как она работает...
Код
list($var1, $var2, $var3) = split("|", $string);

В переменные var1, var2, var3 будут занесены те же значения массива $stuff с индексами от 0 до 2.
Но будь осторожен с тем, что вводишь там где "|"... чтобы разделить по точке,то нужно поставить обратный слэш сначала - "\."

А вообще попробуй поискать в php-manual-е следующие функции: preg_split(), spliti(), explode(), implode(), chunk_split(), and wordwrap(). Найдёшь, что тебе нужно.

Автор: IZ@TOP 2.4.2003, 17:06
Цитата
Iz@top, мдям... вроде книжек много умных, а толку мало  Страный ты какой!

Ты думаешь мне так охото на работе книги сидеть читать ? А идея эта у меня тока седня появилась ! Вот я и решил спросить - может кто сразу готовое решение предложет ... но теперь уже не надо, завтра я сам на свой ответ отвечу !

Автор: BlackWolf 2.4.2003, 18:31
Вот держи ленивец smile.gif
Код


<?
function GetVariableValue($variable,$variables)
{
 $pattern = "/".$variable.":([^\|]*)/";
 if(preg_match($pattern,$variables,$matches))
  return $matches[1];
 else
  return "";
}

echo GetVariableValue("a","time:asdasdasdasdz|a:123123123123z");
?>  


Автор: Loquacious 3.4.2003, 06:40
Iz@top, вон виш народ тебе и кинул, а ты боялся!

Автор: IZ@TOP 3.4.2003, 08:39
А я сам придумал !
Код

<?php
function LoadLog_($log_file)
{
if(!file_exists($log_file)) { $fop = fopen($log_file,"w"); fclose($fop); } else {
 $line_arr = @file($log_file);
 $c = count($line_arr);

 $i = 0;
 while($i < $c)
 {
  $tmp[$i] = explode("|",$line_arr[$i]);
  $i++;
 }
 $i = 0;
 $r = 0;
 $c = count($tmp);
 while($i < $c)
 {
  $ctmp = count($tmp[$i]);
  if($r < $ctmp)
  {
   $vtmp = explode(":",$tmp[$i][$r]);
   $key = $vtmp[0];
   $log[$i][$key] = $vtmp[1];
   $r++;
  } else {
   $i++;
   $r = 0;
  }
 }
}
return $log;
}

$log = LoadLog_("log/access.log");
/*
...

   тут обрабатываем массив $log, и выводим все что нам надо

...
*/
?>

Вот собственно к чему я и пришел ... создан ассоциативный массив, я думаю всем понятно че сдесь происходит smile.gif

Автор: IZ@TOP 3.4.2003, 08:42
Цитата
Вот держи ленивец

Не фига я не ленивец, вчера вот сидел с головной болью, сидел тупил, потом минут через 15 осенило !

Автор: IZ@TOP 3.4.2003, 14:04
PHP FOREVER

Автор: Loquacious 3.4.2003, 14:10
Цитата(Iz @ 3.4.2003, 00:42)
Цитата
Вот держи ленивец

Не фига я не ленивец, вчера вот сидел с головной болью, сидел тупил, потом минут через 15 осенило !

Енто ты когда уже успел так поломать? biggrin.gif

Автор: Loquacious 3.4.2003, 14:11
Цитата(Iz @ 3.4.2003, 00:39)
А я сам придумал !
Код

<?php
function LoadLog_($log_file)
{
if(!file_exists($log_file)) { $fop = fopen($log_file,"w"); fclose($fop); } else {
 ....

Вот собственно к чему я и пришел ... создан ассоциативный массив, я думаю всем понятно че сдесь происходит smile.gif

Ну ты и завернулся млин..... хэ-хэ-хэ-хэ-хэ-хэ-хэ-хэ...... во даеш!!!!!!!!!!!!1 smile.gif

Автор: IZ@TOP 3.4.2003, 14:22
Ну как смог, для моих нужд вполне достаточно ! Скоро дам тебе ссылочку на логи своего сайта ...

Аватар у тя прикольный !

Автор: IZ@TOP 4.4.2003, 13:52
Если кому интересно че я с кодом сделал - http://ultra.dax.ru/util/load.log.php

Автор: arial 9.4.2003, 15:23
baaa.gif

<?php
function LoadLog_($log_file)
{
if(!file_exists($log_file)) { $fop = fopen($log_file,"w"); fclose($fop); } else {
.........

Согласен с Loquacious, зачем этот огород?
Сделай:

<?php
function LoadLog_($log_file)
{
if(file_exists($log_file)) {
.........

Накой черт открывать-закрывать файл? cool.gif

Автор: IZ@TOP 10.4.2003, 08:41
Цитата
Накой черт открывать-закрывать файл? 

Если его нет, то при открытии файла с дерективой w он создается !!!!!!!!!!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)