2013-06-29 4 views
7

मैंने कई संभावित समाधानों की कोशिश की है, लेकिन उनमें से कोई भी मेरे लिए काम नहीं कर रहा है। सरल एक:मैं php का उपयोग कर फ़ाइल की आखिरी पंक्ति को कैसे हटा सकता हूं?

$file = file('list.html'); 
array_pop($file); 

कुछ भी नहीं कर रही है। क्या मुझसे यहां कुछ गलत हो रहा है? क्या यह अलग है क्योंकि यह एक HTML फ़ाइल है?

+0

कृपया कुछ और विवरण दें –

+0

आपको डिस्क पर संग्रहीत फ़ाइल को वास्तव में बदलने के लिए list.html पर $ file लिखना होगा –

+0

क्या आपका मतलब है कि आप अंतिम पंक्ति को हटाना चाहते हैं और इसे डिस्क पर वापस सहेजना चाहते हैं? – angelsl

उत्तर

9

यह चाहिए काम करता है:

<?php 

// load the data and delete the line from the array 
$lines = file('filename.txt'); 
$last = sizeof($lines) - 1 ; 
unset($lines[$last]); 

// write the new data to the file 
$fp = fopen('filename.txt', 'w'); 
fwrite($fp, implode('', $lines)); 
fclose($fp); 

?> 
+0

मैंने इसे किसी अन्य साइट पर पढ़ा, लेकिन जब मैंने कोशिश की, तो उसने मूल दस्तावेज़ की प्रतिलिपि बनाई और सब कुछ दो बार दिखाई दिया। क्या इसका कोई मतलब है? – jemtan990

+0

हे मेरे भगवान, मैंने सोचा कि मैं क्या गलत कर रहा था और यह वास्तव में बेवकूफ था। मैं फ़ाइल में सरणी लिखने की कोशिश कर रहा था और साथ ही साथ नई जानकारी जोड़ता था। मुझे fopen ('list.html', 'w +') की आवश्यकता थी; फिर बंद करें, फिर इसे 'ए' के ​​साथ फिर से खोलें। हालांकि सभी मदद के लिए धन्यवाद! यह समाधान काम करता है। – jemtan990

+0

हम CSV @angezanetti से पहली और आखिरी पंक्तियों को कैसे हटा सकते हैं? –

-2

आप केवल फ़ाइल पढ़ रहे हैं, तो आप अब file_put_contents आदि में फ़ाइल

देखो लिखने की ज़रूरत

+0

मुझे खेद है, मुझे अधिक जानकारी का उपयोग करना चाहिए था। मैं इस प्रश्न को एक अलग कंप्यूटर पर पूछ रहा हूं, जिस पर मैं कोड लिख रहा हूं, इसलिए मैंने सब कुछ शामिल नहीं किया। मैंने फाइल को लिखा, लेकिन यह कुछ भी नहीं कर रहा है। – jemtan990

0

एक चर के पहले और अंतिम लाइन निकालें PHP में:

phpsh इंटरैक्टिव खोल का उपयोग:

php> $test = "line one\nline two\nline three\nline four"; 

php> $test = substr($test, (strpos($test, "\n")+1)); 

php> $test = substr($test, 0, strrpos($test, "\n")); 

php> print $test; 
line two 
line three 

आपके पास "अंतिम गैर खाली रेखा" हो सकती है। उस स्थिति में ऐसा करें:

ध्यान दें कि सामग्री के बाद तीन खाली रेखाएं हैं। आखिरी बार हटाने से पहले यह उन पंक्तियों से छुटकारा पाता है:

php> $test = "line one\nline two\nline three\nline four\n\n\n"; 

php> $test = substr($test, 0, strrpos(trim($test), "\n")); 

php> print $test; 
line one 
line two 
line three 
0

मैंने नीचे से लाइनों की एक्स संख्या को हटाने के लिए एक फ़ंक्शन बनाया है। $max को उन पंक्तियों की संख्या पर सेट करें जिन्हें आप हटाना चाहते हैं।

function trim_lines($path, $max) { 
    // Read the lines into an array 
    $lines = file($path); 
    // Setup counter for loop 
    $counter = 0; 
    while($counter < $max) { 
    // array_pop removes the last element from an array 
    array_pop($lines); 
    // Increment the counter 
    $counter++; 
    } // End loop 
    // Write the trimmed lines to the file 
    file_put_contents($path, implode('', $lines)); 
} 

कॉल इस तरह समारोह:

trim_lines("filename.txt", 1); 

चर $path फ़ाइल या एक फ़ाइल नाम के लिए एक रास्ता हो सकता है।

संबंधित मुद्दे

 संबंधित मुद्दे