Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

18.11.2008, 22:03
|
|
Постоянный
Регистрация: 19.02.2008
Сообщений: 438
Провел на форуме: 956872
Репутация:
186
|
|
Помогите удалить строку
Помогите удалить строку из файла по ид, ид = это первое число в строке. Уже всю голову переломал, чего только не пробовал, пробовал в массив весь файл через file() закидывать и по номеру строки удалять, но тогда другие сложности, ведь ид с номером строки не будет совпадать, пробовал регулярками искать и удалять.... В общем я вообще запутался, бошка уже кипит!
помогите плиз
уже и так пробовал:
PHP код:
if(isset($_GET['id'])) {
$file_base = file('../database/news.db');
foreach($file_base as $file_base2) {
list($theme_id, $theme_name, $theme_body, $theme_date) = split(':', $file_base2);
if($_GET['id'] == $theme_id) $_GET['id'] = $id; unset($file_base[$id]);
}
$fp_base = fopen('../database/news.db', 'w');
$file_imp = implode('', $file_base);
fputs($fp_base, $file_imp);
fclose($fp_base);
}
строки в базе типа -
2:егьнгб:ама:18.11.08
|
|
|

18.11.2008, 22:19
|
|
Участник форума
Регистрация: 06.06.2008
Сообщений: 162
Провел на форуме: 3942177
Репутация:
244
|
|
PHP код:
<?php
$ids = '2:егьнгб:ама:18.11.08
4:егьнгб:ама:18.11.08
9:егьнгб:ама:18.11.08
3:егьнгб:ама:18.11.08
1:егьнгб:ама:18.11.08';
$id = explode("\r\n", $ids);
foreach($id as $idd){
if(strpos($idd, '4') === false){
echo $idd.'<br/>';
}
}
?>
|
|
|

18.11.2008, 22:34
|
|
Постоянный
Регистрация: 19.02.2008
Сообщений: 438
Провел на форуме: 956872
Репутация:
186
|
|
да, но если "4" встретится ещё до нужной мне строки? а если у строки ид будет "42"?
|
|
|

18.11.2008, 22:49
|
|
Участник форума
Регистрация: 06.06.2008
Сообщений: 162
Провел на форуме: 3942177
Репутация:
244
|
|
PHP код:
<?php
$ids = '2:егьнгб:ама:18.11.08
4:егьнгб:ама:18.11.08
9:егьнгб:ама:18.11.08
3:егьнгб:ама:184.11.08
1:егьнгб:ама:18.11.08';
$id = explode("\r\n", $ids);
foreach($id as $idd){
$iddd = (explode(':', $idd)) ? $idd[0] : false;
if(strpos($iddd, '4') === false){
echo $idd.'<br/>';
}
}
?>
|
|
|

19.11.2008, 00:52
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме: 2769640
Репутация:
1304
|
|
Ru}{eeZ Ну люблю я регулярки))
PHP код:
$ids = '2:егьнгб:ама:18.11.08
4:егьнгб:ама:18.11.08
9:егьнгб:ама:18.11.08
3:егьнгб:ама:18.11.08
1:егьнгб:ама:18.11.08';
$delid=4;
$ids=preg_replace('#^'.preg_quote($delid).':[^\n]*$\n?#m','',$ids);
Последний раз редактировалось Gifts; 19.11.2008 в 00:55..
|
|
|

19.11.2008, 01:14
|
|
Постоянный
Регистрация: 22.03.2008
Сообщений: 325
Провел на форуме: 1208132
Репутация:
63
|
|
Сообщение от Ru}{eeZ
да, но если "4" встретится ещё до нужной мне строки? а если у строки ид будет "42"?
ХМ чо то тупите ребята , а несудьба искать `4:`
PHP код:
<?php
$ids = '2:егьнгб:ама:18.11.08
4:егьнгб:ама:18.11.08
9:егьнгб:ама:18.11.08
3:егьнгб:ама:18.11.08
1:егьнгб:ама:18.11.08';
$id = explode("\r\n", $ids);
foreach($id as $idd){
if(strpos($idd, '4:') == false){ //
echo $idd.'<br/>';
}
}
?>
|
|
|

19.11.2008, 01:43
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме: 2769640
Репутация:
1304
|
|
Buffalon
Ты сильно удивишься для входных данных:
Код:
34:егьнгб:ама:18.11.08
14:егьнгб:ама:18.11.08
444444:егьнгб:ама:18.11.08
2123544:егьнгб:ама:18.11.08
1:егьнгбЧЕТЫРЕ4:ама:18.11.08
|
|
|

19.11.2008, 16:45
|
|
Постоянный
Регистрация: 19.02.2008
Сообщений: 438
Провел на форуме: 956872
Репутация:
186
|
|
Сделал вот так:
PHP код:
if(isset($_GET['id'])) {
$file_base = file('../database/news.db');
foreach($file_base as $file_base2){
if(strpos($file_base2, $_GET['id'].':') === FALSE){
$cleared[] = $file_base2;
}
}
$fp_base = fopen('../database/news.db', 'w');
fputs($fp_base, implode('', $cleared));
fclose($fp_base);
}
всё бы хорошо, если б только не выводило ошибку (и не записывало пустоту) пр нахождении ещё одной такой цифры c ":" ))
Последний раз редактировалось Ru}{eeZ; 19.11.2008 в 17:10..
|
|
|

19.11.2008, 17:03
|
|
Познающий
Регистрация: 23.09.2007
Сообщений: 75
Провел на форуме: 938032
Репутация:
86
|
|
вот, вроде работает
PHP код:
if (!empty($_GET['id'])) {
$db = file('news.db');
$f = fopen('news.db', 'w');
foreach ($db as $line) {
list($id, $data) = explode(':', $line, 2);
if ($id == $_GET['id']) continue;
fputs($f, $id.':'.$data);
}
fclose($f);
}
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|