2013-05-16 21 views
5

के बाद एक नई लाइन कैसे डालें I am new here।
वैसे भी, मैंने fwrite() पर अपना शोध किया, लेकिन मुझे समाधान नहीं मिला, इसलिए मैं मदद मांग रहा हूं। मुझे जो चाहिए वह है f.e. कुछ अन्य विशिष्ट रेखा के बाद पाठ की एक नई पंक्ति जोड़ने के लिए। एफ.ई.PHP fwrite() कुछ विशिष्ट लाइन

//Users 

//Other stuff 

//Other stuff2 

अब मैं क्या करना चाहते हैं क्या है छू "अन्य सामग्री" और "अन्य सामग्री 2" बिना // उपयोगकर्ता नीचे एक नया उपयोगकर्ता जोड़ने के लिए सक्षम हो: जिसमें वहाँ मैं एक .txt फ़ाइल है । तो यह कुछ इस तरह दिखना चाहिए:

//Users  
Aneszej 
Test321 
Test123 

//Other stuff 

//Other stuff2 

क्या मैं अब तक है:

$config = 'test.txt'; 
$file=fopen($config,"r+") or exit("Unable to open file!"); 

$date = date("F j, Y"); 
$time = date("H:i:s"); 

$username = "user"; 
$password = "pass"; 
$email = "email"; 
$newuser = $username . " " . $password . " " . $email . " " . $date . " " . $time; 

while (!feof($file)) { 
    $line=fgets($file); 
    if (strpos($line, '//Users')!==false) { 
     $newline = PHP_EOL . $newuser; 
    } 

} 

fwrite($file, $newline); 

fclose($file); 

test.txt फ़ाइल

//Users 

//Something Else 

//Something Else 2 

लेकिन यह केवल के अंत करने के लिए उपयोगकर्ताओं लिखता है। txt फ़ाइल।

आपकी मदद के लिए बहुत बहुत धन्यवाद! यह हल हो गया है

+0

आप – Hackerman

+0

मैं जब आपकी फ़ाइल हेरफेर एक छोटा सा जटिल होने के लिए शुरू होता है लगता है fseek कोशिश कर सकते हैं, तो आप एक डेटाबेस का उपयोग करना चाहिए। SQLite आज़माएं, आपको पूरी तरह उपयुक्त होना चाहिए ... –

+0

यह सिर्फ एक उदाहरण था, मैं इसे किसी और चीज़ के लिए उपयोग करने जा रहा हूं। जानकारी के लिए धन्यवाद। – Aneszej

उत्तर

5

मैंने आपके कोड को संशोधित किया है, मुझे लगता है कि आपको निम्न की आवश्यकता है, और मैंने टिप्पणी भी दी है, नीचे दिया गया कार्य नया उपयोगकर्ता जोड़ना जारी रखेगा, आप उपयोगकर्ता को मौजूद जांचने के लिए शर्त जोड़ सकते हैं।

$config = 'test.txt'; 
$file=fopen($config,"r+") or exit("Unable to open file!"); 

$date = date("F j, Y"); 
$time = date("H:i:s"); 

$username = "user"; 
$password = "pass"; 
$email = "email"; 
$newuser = $username . " " . $password . " " . $email . " " . $date . " " . $time."\r\n"; // I added new line after new user 
$insertPos=0; // variable for saving //Users position 
while (!feof($file)) { 
    $line=fgets($file); 
    if (strpos($line, '//Users')!==false) { 
     $insertPos=ftell($file); // ftell will tell the position where the pointer moved, here is the new line after //Users. 
     $newline = $newuser; 
    } else { 
     $newline.=$line; // append existing data with new data of user 
    } 
} 

fseek($file,$insertPos); // move pointer to the file position where we saved above 
fwrite($file, $newline); 

fclose($file); 
+0

धन्यवाद बहुत अच्छा काम करता है और जैसा कि मैं चाहता था! और टिप्पणी करने के लिए धन्यवाद कि प्रत्येक चीज क्या करती है। – Aneszej

0

आप पढ़ने के अंत में नई सामग्री लिखते हैं, इसलिए इसे फ़ाइल के अंत में लिखना है - कर्सर सभी लाइनों को पढ़ने के बाद वहां है।

या तो आप सभी सामग्री को php-variable में संग्रहीत करते हैं और अंत में फ़ाइल को ओवरराइट करते हैं, या आप कर्सर को रॉस रोजास टिप्पणी द्वारा उल्लिखित अनुसार fseek के साथ रिवाइंड करते हैं। जैसे ही आप "कुछ और" - रेखा पढ़ते हैं, इसे किया जाना चाहिए।

0

आप '// उपयोगकर्ताओं के खोजने के बाद आपको break की जरूरत है। आप फ़ाइल के अंत में पढ़ते रहते हैं।

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