2014-11-04 5 views
10

के साथ फ़ाइल सामग्री पढ़ें मैं लैरवेल के साथ लाइन लाइन की सामग्री को पढ़ने की कोशिश कर रहा हूं। हालांकि, मुझे इसके बारे में कहीं भी कुछ नहीं मिल रहा है।लार्वेल

क्या मुझे फॉपेन फ़ंक्शन का उपयोग करना चाहिए या क्या मैं इसे फ़ाइल :: get() फ़ंक्शन के साथ कर सकता हूं?

मैंने एपीआई की जांच की है लेकिन फ़ाइल की सामग्री को पढ़ने के लिए कोई फ़ंक्शन नहीं लगता है।

+0

उपयोग कर सकते हैं किसी भी देशी तरीकों/Laravel में कार्यों कि ऐसा करेंगे नहीं हैं। फ़ाइलों को संभालने वाले पैकेज को पकड़ने के लिए देखो या जैसा आपने करना शुरू कर दिया है, इसे स्वयं मैन्युअल रूप से करें। –

+0

धन्यवाद, मैंने सोचा कि कुछ ऐसा था क्योंकि आप फ़ाइल :: get ($ path) के साथ फ़ाइल प्राप्त कर सकते हैं। मैं तब अपनी खुद की विधियों का विकास करूंगा! – Cheskq

+1

मैंने सोचा कि जब भी मुझे कुछ समय पहले यह समस्या थी। दुर्भाग्य से फ़ाइल की संपूर्ण सामग्री को वापस करने के लिए 'फ़ाइल :: get() 'विधि' file_get_contents()' विधि का उपयोग करती है। –

उत्तर

17

क्या आप सरल PHP का उपयोग नहीं कर सकते?

foreach(file('yourfile.txt') as $line) { 
    // loop with $line for each line of yourfile.txt 
} 
+0

मैं यही कर रहा हूं, मैं बस सोच रहा था कि ऐसा करने के लिए लार्वाल फ़ंक्शन है या नहीं। – Cheskq

+11

कैसे लार्वेल 1 लाइन से कम कर सकता है? – KyleK

+0

यह स्वीकार्य उत्तर होना चाहिए। 'फ़ाइल()' फ़ाइल की सामग्री को सरणी के रूप में लौटाती है। 'फ़ाइल :: get' और' file_get_contents' दोनों स्ट्रिंग के रूप में सामग्री को वापस कर देते हैं, जिसे आपको किसी सरणी में जाने के लिए डिलीमीटर पर पार्स करने की आवश्यकता होती है। –

11

आप सामग्री प्राप्त करने के लिए निम्न का उपयोग कर सकते हैं:

$content = File::get($filename); 

जो एक Illuminate\Filesystem\FileNotFoundException वापस आ जाएगी अगर यह नहीं मिला है। आप कुछ लाने के लिए चाहते हैं, तो दूरस्थ आप का उपयोग कर सकते हैं:

$content = File::getRemote($url); 

कौन सा false वापस आ जाएगी अगर नहीं मिला।

जब आपके पास फ़ाइल है तो आपको डेटा को संभालने के लिए लार्वेल विशिष्ट तरीकों की आवश्यकता नहीं है। अब आपको php में सामग्री के साथ काम करने की जरूरत है। आप लाइनों को पढ़ने के लिए wan't यदि आप वर्णित @kylek है जैसे कि यह कर सकते हैं:

foreach($content as $line) { 
    //use $line 
} 
+4

नहीं, '$ content' स्ट्रिंग होगा, एक सरणी नहीं – user151496

+1

यह मेरे लिए काम नहीं करता क्योंकि, विक्टर ने बताया, $ सामग्री में एक स्ट्रिंग होगी, न कि सरणी। जब मैं इसे आज़माता हूं तो मुझे "foreach()" के लिए अमान्य तर्क दिया जाता है। –

+0

बस ऊपर दिए गए उत्तर का उपयोग करें और फ़ाइल के साथ प्रारंभिक फ़ाइल को पढ़ें() –

1

आप

try 
{ 
    $contents = File::get($filename); 
} 
catch (Illuminate\Contracts\Filesystem\FileNotFoundException $exception) 
{ 
    die("The file doesn't exist"); 
}