0

OutlookのCSVファイルの内容をエコーアウトするために次のスクリプトを作成しました。

これは、CSVを配列に分解するスクリプトの一部であり、名、名、電子メールの3つの値のみを抽出します。

for ($i=87; $i<= $countdel-87; $i=$i+88 ){

if(empty($readout[$i])){ echo "<b style=\"color:RED;\">FIRST NAME N/A</b>"; }
else{ echo str_replace("Categories","",$readout[$i]).".........................."; }

if(empty($readout[$i+2])){ echo "<b style=\"color:RED;\">LAST NAME N/A</b>".".........................."; }
else{ echo $readout[$i+2].".........................."; };

if(empty($readout[$i+14])){ echo "<b style=\"color:RED;\">EMAIL N/A</b>"; }
else{ echo $readout[$i+14]; };

echo "<br>";
}

次に、コードは次のような文字列を吐き出します。

Joe ............. Smith ...............jSmith@yahoo.com

ここで、名前やメールアドレスがなく、代わりに吐き出されると言います

Joe .......... LAST NAME N/A .............. EMAIL N/A

これはすべてダンディに機能します。私が問題を抱えているのは、名前が印刷されているので、名前がわからない場合です。

........... Smith ..............jSmith@yahoo.com

このコードは、問題が発生していると思われる場所です。

if(empty($readout[$i])){ echo "<b style=\"color:RED;\">FIRST NAME N/A</b>"; }

$readout[$i]値がないときに何も印刷されないのに、が空になることはないようです。ただし、他のすべての$readout[$i+$foo]アレイは機能します。

4

1 に答える 1

0

私はこれを機能させることができました。何が起こって$readout[$i]いたのかというと、最初に空白があり、「空」にならないようにしました。それに加えて、Outlook CSVクラスターの2行目の最初の列は、最初の列の最後の行として列を共有します。$readout[$i]そのため、 FYIから「カテゴリ」を削除する必要があります。

これが、問題のifステートメントに新しい構成を組み込んだ方法です。

このtrim()関数を使用して空白str_replace()を削除してから、「Categories」という単語を削除します。最後に、値をチェックして空白かどうかを確認します。

if(trim(str_replace("Categories","",$readout[$i])) == ""){ echo "<b style=\"color:RED;\">FIRST NAME N/A</b>".".........................."; }
else{ echo str_replace("Categories","",$readout[$i]).".........................."; }

回答と提案をありがとうございました。

于 2013-01-29T15:09:43.933 に答える