0

我编写了以下脚本来回显 Outlook CSV 文件的内容。

这是脚本的一部分,它将 CSV 分解为一个数组,该数组仅提取以下三个值,名字、姓氏和电子邮件。

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 群集的第二行的第一列与第一列的最后一行共享该列。所以这就是为什么我必须从$readout[$i]FYI 中删除“类别”。

以下是我如何将新结构构建到问题 if 语句中。

我只是使用该trim()功能删除空白,然后使用str_replace()删除“类别”一词。最后我检查该值是否为空白。

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 回答