我有一些来自表单文本区域的多行数据,我需要用 PHP 解析它们 - 数据很乱,但确实有一些顺序:
banid 76562577111118516 "Novxre5" "Banned IP (Recent VAC)" -1
banid 76569811108971511 "'Raiding bases'" "no reason" -1
banid 76561198011111435 "Itxxxey" "No Reason Given" -1
banid 76561198011111341 "76561119811340111" "Banned IP (Killing twice and being stupid.)" -1
banid 76561191119523558 "JuicyMexxx" "No Reason Given" -1
banid 76561111117192264 "2'" "Banned IP (Killing and Looting)" -1
banid 76561198271110021 "[ Gixos ] Banzai © ヅヅ" "Banned IP (Killing)" -1
我想从表单中获取
7656xxxxxxxxxxxxx
之后的所有数字字符串 banid
并忽略其他所有内容,然后使用 PDO 函数将它们全部插入 mysql 表以及其他一些静态数据 - 对于每个数字字符串我想这样构造:
$data = [
[76562577111118516, 'sChve4OUb6j3X5EVlriL0QDtMRKYHGIk', 'Imported from bans.cfg'],
[76569811108971511, 'sChve4OUb6j3X5EVlriL0QDtMRKYHGIk', 'Imported from bans.cfg'],
...
]
我用于将数据插入 mysql 数据库的 PHP 代码目前看起来像这样:
$bannedPlayers = $data;
$sql = "INSERT INTO bans (serverGroupSecretKey, playerSteamID, reason) ";
$sql .= "VALUES (?, ?, ?);";
$stmt = $pdo->prepare($sql);
$pdo->beginTransaction();
foreach ($bannedPlayers as $player) {
$stmt->execute($player);
}
$pdo->commit();
如何解析表单数据并构建
$data
数组?我正在做的事情会扩展到 1000 行左右的表单数据吗?
有任何问题请询问,先谢谢了。
要从 HTML 中的
<textarea>
解析和提取字符串,您可以使用 JavaScript 来操作表单数据。这是解析 <textarea>
内容的简单分步解决方案:
假设您有一个带有
<textarea>
元素的表单:
<form id="myForm">
<textarea id="myTextarea"></textarea>
<button type="submit">Submit</button>
</form>
// Get the textarea element
const textarea = document.getElementById('myTextarea');
// Get the form element
const form = document.getElementById('myForm');
// Listen for form submission
form.addEventListener('submit', function (event) {
event.preventDefault(); // Prevent form submission for demonstration
// Get the text entered in the textarea
const inputText = textarea.value;
// Example of parsing: split input text by line breaks or spaces
const parsedStrings = inputText.split('\n'); // Split by new lines
console.log(parsedStrings);
// You can further process or filter the strings as needed
});
<textarea>
检索 textarea.value
的值。\n
),但您可以自定义解析逻辑以满足您的需求(例如,按空格、逗号或使用正则表达式分割)。event.preventDefault()
用于阻止表单提交,仅用于此示例。split()
方法或者使用正则表达式。const parsedStrings = inputText.trim().split(/\s+/).filter(str => str.length > 0);
此方法允许您从文本区域中提取单个单词或行以进行进一步处理。