我编写了以下脚本来回显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]
数组都可以工作。
答案 0 :(得分: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]).".........................."; }
谢谢大家的答案和建议。