您好我正在测试我的程序,从txt文件中读取字符串行。
我要将结果传输到一个数组,但在测试if语句将最后一个数组转换为字符串时,通过if和switch语句,它总是返回false / else / default结果。
我的代码是:
<?php
$test = file('test.txt');
foreach ($test as $row)
{
$temp = explode(' ', $row);
echo "$row<br>";
$id = (int)$temp[0];
$date = substr($temp[1], 0, 2) . "-" . substr($temp[1], 2, 2) . "-" . substr($temp[1], 4, 4);
$time = substr($temp[2], 0,2) .":". substr($temp[2], 2,2) .":00";
$twt = (string)substr($row, 18);
echo substr($row, 18);
switch ($twt) {
case 'I':
echo "wew";
break;
default:
echo "wow";
break;
}
echo "id: $id date: $date time: $time status: <br>";
}
?>
这个输出是:
005 09012015 0811 I
I wew id: 5 date: 09-01-2015 time: 08:11:00 status:
005 09012015 1813 O
O wew id: 5 date: 09-01-2015 time: 18:13:00 status:
005 09022015 0756 I
I wew id: 5 date: 09-02-2015 time: 07:56:00 status:
005 09022015 1951 O
O wew id: 5 date: 09-02-2015 time: 19:51:00 status:
感谢您的帮助。我有点困惑。我知道$ temp [3]数组包含&#39; I&#39;值。但它仍然在另一个输出上。
答案 0 :(得分:1)
file()会保留换行符/换行符。因此,代替I
,即chr(73),你有三个字符可能是chr(73)chr(13)chr(10)或chr(73)chr(10)chr(13)。
但是有一个标志,您可以将其作为第二个参数传递以删除这些字符(并且还忽略其他空行)。
$test = file('test.txt', FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES );
答案 1 :(得分:0)
可能包含空格或换行符。试试这个
$string = trim(preg_replace('/\s\s+/', ' ', $twt));
或者
$string = str_replace(' ', '', $twt);