如何在php中将文本文件读取到带有2个分隔符的数组中



我正在开发一个登录服务,该服务接受login.html中的两个字段($username和$password(,并将它们作为发布数据传递给login.php。我还将把一个名为"pass.txt"的文本文档读取到数组中。文件如下所示。

anelhams0:7c4a8d09ca3762af61e59520943dc26494f8941b
jattenborough1:5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
nmalins2:7c222fb2927d828af22f592134e8932480637c0d
dlingley3:b1b3773a05c0ed0176787a4f1574ff0075f7521e

它又持续了1800行左右。txt文件的每一行都是一个用户名:sha1password。我将获取用户名的值,并检查它是否与文本文件数组中的用户名匹配。要做到这一点,我需要只通过用户名和密码来分隔文档。因此,例如,我需要将数组[0]分离为数组[0]="anelhams0"和数组[1]="7c4a8d09ca3762af61e59520943dc26494f8941b"以及数组[2]="jattenborough1"等,而不是数组[0]为"anelham 0:7c4a8D09ca3762Af61e9520943dc264 94f89418b"。我找不到任何方法来做到这一点,因为我正在使用两个分隔符。有什么方法可以使用其他函数或循环系统来实现这一点吗?这就是我目前在login.php 中得到的内容

<?php
//Takes our username and password
$username = $_POST["username"];
$password = $_POST["password"];

//read in our text file to an array (each element is a line from the text)
$fileSort = file('pass.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

我不知道您为什么调用从文件$fileSort中读取的数组。我将把它重命名为对我来说更有意义的东西:$allCredentials。您所需要做的就是循环遍历数组并拆分冒号上的行。

$givenUsername = $_POST["username"];
$givenPassword = $_POST["password"];
$allCredentials = file('pass.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($allCredentials as $credentials) {
// version 1: access credentials directly
list($username, $password) = explode(':', $credentials);
// version 2: or store them in a new array
$newCredentials[] = explode(':', $credentials);
}
// here's a way to output the new array
echo '<pre>';
print_r($newCredentials);
echo '</pre>';

请参见:foreach、list((和explode((。

最新更新