2011-12-17 5 views
0

Я хочу добавить строку (значение элемента DOM - $entry = stripslashes($_GET["nameofmytextarea"]);) во вторую строку myfile.csv (чтобы не удалять заголовок).PHP Добавить строку в строку 2

Меня не интересует материал CSV, все уже отформатировано. Просто рассматривайте его как текстовую строку, добавляемую в текстовый файл.

Я не хочу ничего сложного, просто пропустите первую строку и «добавьте» над второй строкой: под заголовком, но, прежде всего, с другими CSV-строками.

Насколько это сложно?

+0

Это почти 2012, и вы _still_ работает с 'magic_quotes_gpc '? – cmbuckley

ответ

3
$contents = explode("\n", file_get_contents('myfile.csv'), 2); 
file_put_contents('myfile.csv', $contents[0]."\n".$entry."\n".$contents[1]); 

Это должно работать, если линии разделены unix-lineendings.
Если файл первый выглядит следующим образом:

header 
content 
content2 

и код выполняется с $entry = 'test'; это будет выглядеть, как это впоследствии:

header 
test 
content 
content2 
+0

Да, это работает, я не знал, что вы можете это сделать. Спасибо, что помогли человеку n00b! –

+0

Нет проблем :) Вот почему мы здесь. – TimWolla

+0

Просто убедитесь, что установлено '$ contents [1]', или вы закончите пустую строку в конце файла, и 'E_NOTICE' - вот почему я предпочитаю' array_splice() 'подход ... – DaveRandom

0

Сочетание file() и array_splice() является то, что вам нужно здесь:

function prepend_to_csv ($file, $line) { 
    if (!$data = file($file)) { 
    return FALSE; 
    } 
    array_splice($data, 1, 0, $line.PHP_EOL); 
    return (bool) file_put_contents($file, $data); 
} 

if (prepend_to_csv('myfile.csv', "this,is,some,data")) { 
    echo 'Success'; 
} else { 
    echo 'Fail'; 
} 

Благодаря тому, как этот метод работает, вы должны убедиться, что вы вручную добавить EOL на новую строку самостоятельно.

Смежные вопросы