我在从文本文件中提取特定文本时遇到困难。我尝试了许多不同的方法,例如使用fopen或file打开文件,但这不会允许我使用任何字符串函数。因此,我决定使用file_get_contents并使用以下字符串方法提取所需的文本:
<?php
$data = [];
$file =
file_get_contents("data.txt", 0, NULL, 148);
list($id, $data_names) = preg_split('[:]', $file);
array_push($names, $data_names);
echo $emails[0];
?>
我使用preg_split将所需的文本分割为一个特定的字符(:),然后将数据放入数组中。哪条线适用于第一行,但我不知道如何在其余的行中执行该操作,我尝试了while循环,但最终以无限循环结束。
data.txt的格式如下:
1:hannah.Smith
2:Bob.jones
3:harry.white
....
任何有关如何执行此操作或更好方法的建议将不胜感激。
答案 0 :(得分:0)
有一个功能。这不是CSV,但请更改定界符。只需获取名称:
$handle = fopen("data.txt", "r"));
while(($line = fgetcsv($handle, 0, ":")) !== FALSE) {
$names[] = $line[1];
}
要通过ID为名称编制索引:
while(($line = fgetcsv($handle, 0, ":")) !== FALSE) {
$names[$line[0]] = $line[1];
}
要获取多维数组中的ID和名称,请使用:
while(($names[] = fgetcsv($handle, 0, ":")) !== FALSE) {}
答案 1 :(得分:0)
好吧,您没有将file_get_contents的返回值分配给变量。因此文件的内容没有被使用。
您可以使用file功能。它将文件的内容读取到数组。数组的每个元素都是文件中的一行。然后,您可以遍历数组并解析每一行。例如:
public void countDownStart() {
handler = new android.os.Handler();
runnable = new Runnable() {
@Override
public void run() {
handler.postDelayed(this, 1000);
try {
SimpleDateFormat dateFormat = new SimpleDateFormat(
"yyyy-MM-dd");
// Please here set your event date//YYYY-MM-DD
Date futureDate = dateFormat.parse("2018-11-4");
Date currentDate = new Date();
if (!currentDate.after(futureDate)) {
long diff = futureDate.getTime()
- currentDate.getTime();
long days = diff / (24 * 60 * 60 * 1000);
diff -= days * (24 * 60 * 60 * 1000);
long hours = diff / (60 * 60 * 1000);
diff -= hours * (60 * 60 * 1000);
long minutes = diff / (60 * 1000);
diff -= minutes * (60 * 1000);
long seconds = diff / 1000;
txtDay.setText("" + String.format("%02d", days));
txtHour.setText("" + String.format("%02d", hours));
txtMinute.setText(""
+ String.format("%02d", minutes));
txtSecond.setText(""
+ String.format("%02d", seconds));
} else {
textViewGone();
}
} catch (Exception e) {
e.printStackTrace();
}
}
};
handler.postDelayed(runnable, 1 * 1000);
}
public void textViewGone() {
}`