| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Demоn 07.03.2003 12:13 / 07.03.2003 12:19
Я написал php класс для совместимости с таблицами Parser если кому надо берите, юзайте, тестируйте:)<?php
class Parser_Tables {
function Save($file="",$table=""){
$fp = fopen ($file,"w");
while (list($k,$v)=each($table)){
for ($i=1; $i<=count($table[$k]); $i++) {
list($key,$value)=each($table[$k]);
if ($i < count($table[$k])) {
fputs($fp,$value."\t");
} else {
fputs($fp,$value);
}
}
fputs($fp,"\r\n");
}
fclose($fp);
}
function Load($file=""){
$table = array();
$fp = fopen ($file,"r");
while (!feof ($fp)) {
$line = fgets($fp,filesize($file));
if ($line!=""){
$str = split("\t",$line);
array_push($table,$str);
}
}
return $table;
fclose($fp);
}
function Select($table="",$command=""){
$arr = split(" ",$command);
for ($i=1; $i<=count($table[0]); $i++) {
list($key,$value)=each($table[0]);
$value = str_replace("\r\n","",$value);
reset ($arr);
while (list($key_arr,$value_arr)=each($arr)){
if ($value_arr==$value) {
$command = (str_replace($value_arr,"\$table[\$k]['".$key."']",$command));
}
}
}
$command = "if (".$command.") {} else {unset(\$new_arr[\$k]);}";
$new_arr = $table;
next($table);
while (list($k,$v)=each($table)) {
eval($command);
}
return $new_arr;
}
}
$table = array(
'0' => array("name","title","age"),
'1' => array("Вова","1","21"),
'2' => array("Леша","1","22"),
'3' => array("Леша","1","23"),
'4' => array("Леша","1","24"),
'5' => array("Леша","1","25")
);
$file = "test_table_php.txt";
$PT = new Parser_Tables;
$PT -> Save($file,$table);
$table = $PT -> Load($file);
print_r($table);
echo "<BR><BR><BR><BR><BR><BR>";
# Аргументы необходимо разделять пробелами.
$table = $PT -> Select($table,"age != 23 && name == 'Леша'");
print_r($table);
?>Да. И ещё если есть предложение и пожелания, то я обязательно выслушаю и приму к сведению.