Txt ফাইলের প্রতিটি লাইনকে নতুন অ্যারের উপাদানটিতে পড়ুন


118

আমি একটি পাঠ্য ফাইলের প্রতিটি লাইন একটি অ্যারেতে পড়ার চেষ্টা করছি এবং প্রতিটি লাইন একটি নতুন উপাদানের সাথে রাখছি।
আমার কোড এখন পর্যন্ত।

<?php
$file = fopen("members.txt", "r");
$i = 0;
while (!feof($file)) {

$line_of_text = fgets($file);
$members = explode('\n', $line_of_text);
fclose($file);

?>

1
আপনার কোডের সাথে অ্যারেতে কি কিছু সঞ্চিত আছে? আপনার কোন নির্দিষ্ট সমস্যা হচ্ছে?
ক্রিস বোর্নহফট

1
সতর্কতা: fopen থেকে মিথ্যা সতর্কতা জারি করবে এবং ফলস্বরূপ এখানে অসীম লুপ হবে। php.net/manual/en/function.feof.php
Gjermund Dahl

থ্রেডের তারিখ সত্ত্বেও এটি '\n\'বিস্ফোরিত হবে না যখন এটি "\n"একটি পালানোর ক্রম হিসাবে পার্স করা উচিত ।
কোডক্যান্ডিস

উত্তর:


397

যদি আপনি কোন বিশেষ প্রক্রিয়াকরণ প্রয়োজন না থাকে, তাহলে এই আপনি যা খুঁজছেন তা কি করা উচিত

$lines = file($filename, FILE_IGNORE_NEW_LINES);

file()অ্যারে থেকে file_get_contents+ ধীরে ধীরে ধীর বলে মনে হচ্ছেexplode
রন

@ রন আমি সম্মতি জানাই তারপরে আবার, প্রতিটি অনুরোধে আপনার কোনও ফাইল পড়া উচিত নয়। সমাধানটি সর্বোত্তম হলেও, এটি কেবল নির্বোধ। ফাইলটির বিষয়বস্তু হয় মেমরি ক্যাশে বা এমনকি একটি ডেটাবেজে সংরক্ষণ করা উচিত। এমনকি পিএইচপি পার্সড ফাইলগুলির সামগ্রী সংরক্ষণ করে। আমার অর্থ, আমরা পিএইচপি 4.3 থেকে অনেক দূরে
ইয়ানিক রচন

35

আমি যে দ্রুততম পথটি পেয়েছি তা হ'ল:

// Open the file
$fp = @fopen($filename, 'r'); 

// Add each line to an array
if ($fp) {
   $array = explode("\n", fread($fp, filesize($filename)));
}

যেখানে name ফাইলের নামটি আপনার ফাইলের পথ এবং নাম হতে চলেছে, যেমন। ../filename.txt।

আপনি কীভাবে আপনার পাঠ্য ফাইলটি সেট আপ করেছেন তার উপর নির্ভর করে আপনার you'll n বিটটি নিয়ে প্রায় খেলতে হবে।


1
আমি "P n" এর পরিবর্তে "পিএইচপি_ইওএল" ব্যবহার করব, এটি এমন দেখাচ্ছে, $ অ্যারে = বিস্ফোরিত (পিএইচপি_ইএল, ফ্রেড ($ এফপি, ফাইলাইজ ($ ফাইলের নাম)));
ফ্যাবিয়ান হার্মসেন

ধন্যবাদ ড্রু, অনেকগুলি কার্য্য চেষ্টা করার পরেও, আপনার কাজটিই কেবল একমাত্র। আমার অনুসন্ধান শব্দটি আপনার of n এর পরিবর্তে <br> হচ্ছে। আমার ফাইলটি কেবল একটি একক বড় মানের অ্যারে হিসাবে পড়া হচ্ছিল, পুরো পাঠ্যটি কেবল একটি অ্যারে আইটেম ছিল $ মায়ার [0], তাই কোনও এক আইটেমের উপর বদলানো কাজ হয়নি। আশা করি এটি কাউকে সাহায্য করবে। আবার ধন্যবাদ.
washere

27

কেবল এটি ব্যবহার করুন:

$array = explode("\n", file_get_contents('file.txt'));

26
$yourArray = file("pathToFile.txt", FILE_IGNORE_NEW_LINES);

FILE_IGNORE_NEW_LINESপ্রতিটি অ্যারের উপাদানটির শেষে নিউলাইন যুক্ত করতে এড়াতে আপনি খালি লাইনগুলি এড়িয়ে যেতেও
ব্যবহার FILE_SKIP_EMPTY_LINESকরতে পারেন

এখানে রেফারেন্স


23
<?php
$file = fopen("members.txt", "r");
$members = array();

while (!feof($file)) {
   $members[] = fgets($file);
}

fclose($file);

var_dump($members);
?>

1
ঠিক আছে আমি এটি পুরোপুরি ধন্যবাদ কাজ করছি। তবে আমাকে একটি অ্যারে উপাদানকে বৈধ = সেট করতে হবে। $ var = $ ary [1]; কাজ করে না. ary [1] = "পরীক্ষা"। যদি এটি সাহায্য করে।
ড্যান

1
নিজেই একটি কাউন্টার চালান এবং সূচকে অ্যারেতে সেট করুন
প্রসাদ

7
$lines = array();
while (($line = fgets($file)) !== false)
    array_push($lines, $line);

স্পষ্টতই, আপনাকে প্রথমে একটি ফাইল হ্যান্ডেল তৈরি করতে হবে এবং এটি সংরক্ষণ করতে হবে $file


7

এটি ঠিক যেমন সহজ:

$lines = explode("\n", file_get_contents('foo.txt'));

file_get_contents() - পুরো ফাইলটি স্ট্রিং হিসাবে পাওয়া যায়।

explode("\n") - ডিলিমিটারের সাথে স্ট্রিং বিভক্ত হবে "\n" - নতুন লাইনের জন্য এএসসিআইআই-এলএফ পালানো কী।

তবে মনোযোগ দিন - পরীক্ষা করুন যে ফাইলটির ইউনিক্স রয়েছে লাইনের শেষ রয়েছে।

যদি "\n"সঠিকভাবে কাজ না করে তবে আপনার কাছে নতুন 2 লাইনের অন্য কোডিং রয়েছে এবং আপনি চেষ্টা করতে পারেন "\r\n", "\r"বা"\025"


3
$file = __DIR__."/file1.txt";
$f = fopen($file, "r");
$array1 = array();

while ( $line = fgets($f, 1000) )
{
    $nl = mb_strtolower($line,'UTF-8');
    $array1[] = $nl;
}

print_r($array);

1

আপনি সঠিক পথে ছিলেন, তবে আপনার পোস্ট করা কোডটিতে কিছু সমস্যা ছিল। প্রথমত, কিছুক্ষণ লুপের জন্য কোনও বন্ধনী বন্ধনী ছিল না। দ্বিতীয়ত, lo line_of_text প্রতিটি লুপ পুনরাবৃত্তির সাথে ওভাররাইট করা হবে, যা লুপের = = a। = পরিবর্তন করে স্থির করা হয়েছে। তৃতীয়ত, আপনি আক্ষরিক অক্ষর '\ n' বিস্ফোরিত করছেন এবং একটি আসল নিউলাইন নয়; পিএইচপি-তে, একক উদ্ধৃতিগুলি আক্ষরিক চরিত্রগুলি বোঝায় তবে ডাবল উদ্ধৃতিগুলি প্রকৃতপক্ষে পালিয়ে যাওয়া চরিত্রগুলি এবং ভেরিয়েবলগুলি ব্যাখ্যা করবে।

    <?php
        $file = fopen("members.txt", "r");
        $i = 0;
        while (!feof($file)) {
            $line_of_text .= fgets($file);
        }
        $members = explode("\n", $line_of_text);
        fclose($file);
        print_r($members);
    ?>

1
    $file = file("links.txt");
print_r($file);

এটি txt ফাইলটিকে অ্যারে হিসাবে গ্রহণ করবে। এরপরে লিঙ্কসটিটিএসটি ফাইলের জন্য কিছু লিখুন (একটি উপাদানের জন্য একটি লাইন ব্যবহার করুন), এই পৃষ্ঠাটি চালান :) আপনার অ্যারেটি ফাইল হবে


0

এই এখানে বেশ ভাল আবৃত করা হয়েছে, কিন্তু যদি তোমরা প্রকৃতই আরও ভাল কর্মক্ষমতা কিছু এখানে তালিকাভুক্ত চেয়ে, আপনি এই পদ্ধতির যে ব্যবহার ব্যবহার করতে পারেন strtok

$Names_Keys = [];
$Name = strtok(file_get_contents($file), "\n");
while ($Name !== false) {
    $Names_Keys[$Name] = 0;
    $Name = strtok("\n");
}

দ্রষ্টব্য, এটি ধরে নিয়েছে যে আপনার ফাইলটি \nনতুন লাইন চরিত্র হিসাবে সংরক্ষণ করা হয়েছে (আপনি প্রয়োজন হিসাবে এটি আপডেট করতে পারেন), এবং এটি মানগুলি পরিবর্তে শব্দ / নাম / লাইনগুলি অ্যারের কী হিসাবে সংরক্ষণ করে, যাতে আপনি এটি হিসাবে ব্যবহার করতে পারেন পরিবর্তে সারণী, এর পরিবর্তে isset(অনেক বেশি দ্রুত) ব্যবহারের অনুমতি দেয় in_array

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.