2017-08-08 3 views
1

私は現在空の行を除外して配列$presidentsに保存しようとしています(そしてforeachループが名前なしの文字列をエコーする問題を解決します) 。空の行を保存してPHPの中で保存したり除外したりしないようにする

私はもちろん、私の素人の意見では(preg_match()trim()など)、うまくいくはずのいくつかのことを試しました。

誰かがこれを手伝ってくれますか?

$file = fopen("namen2.txt", "r"); 
$presidents = array(); 
$count = count(file("namen2.txt")); 
for($i = 1; $i <= $count;){ 
    $file_line = fgets($file); 
    $line = explode(" ", $file_line); 
    $president = array(); 
    $president["firstname"] = $line[0]; 
    if(empty($president["firstname"] == false)){ 
     $president["lastname"] = $line[1]; 
     $president["counter"] = $i; 
     $presidents[] = $president; 
     $i++; 
    } 
    else{echo "fehler";} 
} 
foreach($presidents as $president_order){ 
    echo "Hey ". $president_order["firstname"]. " ". $president_order["lastname"]. ", du bist der ". $president_order["counter"]. ". Präsident der USA in meiner Liste. \n"; 
} 

編集:私は、条件を変更して挿入位相で私の入力を制御することによって、大きなヒントに感謝し、私の問題を解決してきました!

答えて

1

データの挿入段階でスペースや不要な文字を処理する必要があります。挿入する前にそのコードに戻ってデータを消去する必要はありません。

PHPのtrimを使用すると、うまくいかない理由はありません。 "Firstname Lastname"のような文字列を保持する変数がある場合、その関数を使用すると "Firstname Lastname"に変換されます。

各データをスペースで区切っているようです...あなたのデータにスペースを含める必要があると考えると、それは良い考えではありません(例:Mary Janeなど)。

0

次の正規表現で空行を発見し、削除することができます:それはあなたがが配列の要素をループする必要があるかもしれない配列なので

preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $presidents); 

0

私はこのコードをテストしませんでしたが、タスクを達成するためのより緊密な方法のようです。ちょうどtrim()と正の弦の長さを確認してください。要素の制限をexplode()に追加し、データストレージの構文を凝縮しました。

$file=fopen("namen2.txt","r"); 
$i=0; // initialize counter 
while(!feof($file)){ 
    $line=trim(fgets($file)); // get line and trim leading/trailing whitespaces from it 
    if(strlen($line)){ // if there are any non-whitespace characters, proceed 
     $names=explode(' ',$line,2); // max of two elements produced, in case: Martin Van Buren 
     // explode will fail to correctly split: John Quincy Adams 
     $presidents[]=['counter'=>++$i,'firstname'=>$names[0],'lastname'=>(isset($names[1])?$names[1]:'')]; // store the data for future processing 
    } 
} 
fclose($file); 

foreach($presidents as $pres){ 
    echo "Hey {$pres["firstname"]} {$pres["lastname"]}, du bist der {$pres["counter"]} Präsident der USA in meiner Liste.\n"; 
} 
関連する問題