Помогите удалить строку из файла по ид, ид = это первое число в строке. Уже всю голову переломал, чего только не пробовал, пробовал в массив весь файл через 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
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);
ХМ чо то тупите ребята , а несудьба искать `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/>'; } } ?>
Buffalon Ты сильно удивишься для входных данных: Code: 34:егьнгб:ама:18.11.08 14:егьнгб:ама:18.11.08 444444:егьнгб:ама:18.11.08 2123544:егьнгб:ама:18.11.08 1:егьнгбЧЕТЫРЕ4:ама:18.11.08
Сделал вот так: 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 ":" ))
вот, вроде работает 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); }