PHP fonksiyonu patlayabilir

6 Cevap

Ben şu not defteri dosyası var;

dbName:              

tableName:       

numberOfFields:

Ben $ tabloismi ve $ numFields için numberOfFields için $ dbname, tablename için DBName değerini atar bir php uygulama yazmak çalışıyorum.

Benim kod:

$handle = @fopen("config.txt", "r");
if ($handle) {
    while (!feof($handle)) {
        $buffer = fgets($handle, 4096);
        list($dbName, $tableName, $numFields) = explode(":", "$buffer");
    }
    fclose($handle);
}

Ancak, ":" satır sonlarını DBName ve tablo ismi arasında olduğu gibi çalışmıyor. Nasıl notepad dosyasında satır sonlarını tutarak, $ tampon patlayabilir mi?

Teşekkür ederim.

6 Cevap

file fonksiyonuna bir göz var. Bu açma ve dosya okuma önemser ve dosyadan satır bir dizi döndürür. Daha sonra dizi yineleme ve ayrı ayrı her bir satırda faaliyet olabilir.

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

bunu yapabilirsiniz:

$data=file_get_contents("file");
$s  = preg_split("/\n\n+/m", $data);
print_r($s);

Sen chr ($ INT) kullanabilirsiniz; Lütfen patlayabilir çağrısında satır sonu bakmak için çalışır.

Sizin burada chr fonksiyonu daha bulabilirsiniz:

http://php.net/manual/en/function.chr.php

Size satır sonu için ASCII karakter bulabilirsiniz ekle:

http://www.asciitable.com/

fgets tek bir satır döndürür. Hiçbir şekilde bu atama list() yanlış yani $buffer Hiç, bir kerede üç öğe olurdu vardır. "dbName" (kolon önce metin) "" (kolon sonra metin): İlk satır için, explode(), iki öğe içeren bir dizi döndürür.

Bu işi yapar:

list ($dbName, $tableName, $numFields) = explode (':', implode ('', file ('config.txt')));

Eğer çizgi içeriğinin emin ve dosya keyfi büyük büyümek değil eğer:

  1 <?php
  2 
  3 $handle = @fopen("config.txt", "r");
  4 if ($handle) {
  5     $buffer = "";
  6     while (!feof($handle)) {
  7         $buffer = $buffer . trim(fgets($handle, 4096));
  8     }
  9     fclose($handle);
 10 
 11     list($dbName, $tableName, $numFields) = explode(":", $buffer);
 12 }
 13 
 14 ?>

While döngüsü tüm hatları geçmesi ve boşluk çıkardıktan sonra aynı tampon üzerine bağlamak olacaktır. Bu ayrılmış sadece içeriği bırakır ":". Bu artık patlamaya müsait.

Nicolas yazdığı gibi, feof bir defada bir satır alır, böylece liste atama döngü dışında gerçekleşmesi gerekiyor.