سؤال

وأنا لست الأفضل في PHP وسيكون في غاية الامتنان إذا كان شخص ما يمكن أن يساعد. أساسا أنا بحاجة إلى تحليل كل سطر من datafeed ومجرد الحصول على كل بت من المعلومات بين كل "|" - ثم لا أستطيع إضافته إلى قاعدة البيانات. أعتقد أنني أستطيع التعامل مع الحصول على المعلومات من بين "|" الصورة باستخدام تنفجر ولكن انا بحاجة الى القليل من المساعدة مع تحليل كل سطر من ملف نصي كما فريدة. انفاكت لجعله أكثر بساطة، أنا فقط بحاجة لاستخدام كل سطر من متغير، وسأقدم المحتوى إلى المتغير باستخدام جزء النص ونموذج. أي مساعدة سيكون موضع تقدير كبير!

هل كانت مفيدة؟

المحلول

ويمكنك قراءة الملف إلى مجموعة من الخطوط وتفعل كل شطر بما يلي:

$lines = file("filename");
foreach($lines as $line) {
    $parts = explode("|", $line);
    // do the database inserts here
}

إذا كان لديك كل النص في متغير بالفعل كما قال لك (على سبيل المثال، مع شيء من هذا القبيل file_get_contents ())، يمكنك تنفجر على \ ن أولا ثم القيام بنفس بيان foreach على النحو الوارد أعلاه.

نصائح أخرى

إذا كنت تقرأ من آخر جزء النص الخاص بك، يمكنك استخدام وظيفة تنفجر باستخدام حرف السطر كفاصل الخاص بك للحصول على كل "خط" في متغير كعنصر جديد من صفيف، ثم يمكنك القيام به تنفجر على هاتفك عناصر المصفوفة.

وأي بمعنى.

$sometext = "balh | balh blah| more blah \n extra balh |some blah |this blah";

$lines = explode("\n", $sometext);
foreach($lines as $oneLine)
{
    $lineElements[] = explode("|", $oneLine);
}

وبعد ذلك لديك مجموعة من 2D وelems الخاص بك.

إذا كنت تقرأ من ملف، يمكنك ببساطة استخدام وظيفة ملف موثق هنا:

http://us2.php.net/manual/en/function .file.php

للحصول على كل سطر من الملف كعنصر من عناصر صفيف.

وهناك PHP مكتبة تحليل جاهزة الصنع التي يمكن لصناعة السيارات في الكشف عن شكل CSV.

مثال:

$reader = new Dfp_Datafeed_File_Reader();
$reader->setLocation('test.csv');

foreach ($reader AS $record) {
    print_r($record);
}

وأنها متاحة للتحميل هنا ، وهناك بعض الوثائق <لأ href = "HTTP: // كود .google.com / ع / datafeed / ويكي / ExampleUsage "يختلط =" نوفولو "> هنا .

إذا كان الملف هو صغير، يمكنك استخدام الملف () ر س قراءتها في صفيف سطر واحد لكل عنصر.

وإذا تعذر ذلك، قراءة الملف في حلقة باستخدام fgets ()

$handle = fopen("/tmp/inputfile.txt", "r");
while (!feof($handle)) {
   $buffer = fgets($handle, 4096);
   echo $buffer;
}
fclose($handle);

ويمكنك استخدام تنفجر للحصول على كل:

$myFile = "File.txt";
$fh = fopen($myFile, 'r');
$data = fread($fh);
fclose($fh);
$newLines = explode("\n",$data);

foreach($newLines as $s)
{
  $parsed = explode("|",$s);
  foreach($parsed as $item)
  {
    // do your db load here
  }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top