【发布时间】:2021-04-04 21:19:55
【问题描述】:
我有一个 HTML 输入表单,用于使用 PHP 将用户数据导入数据库 (MYSQL)。
输入中的信息必须是这样的:
[account]
user = {user1}
pwd = {password1}
expdate = 2028-01-01
[account]
user = {user2}
pwd = {password2}
expdate = 2028-01-01
[account]
user = {user3}
pwd = {password3}
expdate = 2028-01-01
现在,PHP 代码应该解析用户数和每个用户信息,并分别保存每个用户信息。
我的 PHP 代码是:
$users = $_POST["users"];
$users = explode(chr(10) . chr(10), $users);
for ($i = 0; $i < count($users); $i++) {
$users[$i] = explode(" ", $users[$i]);
$username = $users[$i][2];
$pwd = $users[$i][5];
$exp = $users[$i][8];
if (strtotime($exp) === false) {
// ...code
} else {
$expiredate = date("Y-m-d", strtotime($exp));
}
}
当输入是单个用户时:
[account]
user = {user1}
pwd = {password1}
expdate = 2028-01-01
我的输出被破坏了(这里是var_export() 输出):
array (
'username' => '{user1}
pwd',
'pwd' => '=',
'exp' => '2028-01-01'
)
问题在于爆炸——pwd 键附加到 username 值、pwd 值 =,它有时会给出错误的日期格式,从而无法保存。
作为一种解决方法,在每个输入的用户名和密码后面加上空格后,所有数据都解析成功。
另外,当我在输入表单中输入多个用户时:
[account]
user = {user1}
pwd = {password1}
expdate = 2028-01-01
[account]
user = {user2}
pwd = {password2}
expdate = 2028-01-01
PHP 代码只读取第一个用户并只保存第一个用户的信息,我希望它们都被保存。
所以:
- 我希望 PHP 代码解析所有要保存的用户信息,而不仅仅是第一个用户。
- 我希望保存用户信息,而不是在用户和密码行的末尾添加空格。
试图编辑我的代码并搜索了很多,很不幸,不知道PHP代码有什么问题。
【问题讨论】:
-
看起来像一个 .ini 文件?如果是这样,请参阅:stackoverflow.com/questions/5695145/…
-
感谢您的评论兄弟..它不是一个ini文件..它只是正常的配置文件数据。类似于 ini ..
-
$users[$i]=explode(" ",$users[$i]);你按空格分割输入我不认为这是正确的!例如:用户名“John Doe”将是 $users[i][0] John 和 $users[i][1] Doe,我建议发送 html 代码,这是我认为的主要问题
-
您的输入看起来像一个
.ini文件。使用explode()将输入字符串拆分为多个片段,然后使用函数parse_ini_string()解析每个片段并获取数组中的数据。
标签: php explode text-parsing