解析表单文本区域中的字符串

问题描述 投票:0回答:1

我有一些来自表单文本区域的多行数据,我需要用 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 行左右的表单数据吗?

有任何问题请询问,先谢谢了。

php mysql pdo
1个回答
0
投票

要从 HTML 中的

<textarea>
解析和提取字符串,您可以使用 JavaScript 来操作表单数据。这是解析
<textarea>
内容的简单分步解决方案:

示例:

假设您有一个带有

<textarea>
元素的表单:

<form id="myForm">
  <textarea id="myTextarea"></textarea>
  <button type="submit">Submit</button>
</form>

JavaScript 代码:

// 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
});

说明:

  1. 获取文本区域值:您可以使用
    <textarea>
    检索
    textarea.value
    的值。
  2. 处理字符串:该示例按换行符分割输入字符串 (
    \n
    ),但您可以自定义解析逻辑以满足您的需求(例如,按空格、逗号或使用正则表达式分割)。
  3. 阻止表单提交
    event.preventDefault()
    用于阻止表单提交,仅用于此示例。

自定义解析:

  • 如果需要更复杂的解析逻辑,可以修改
    split()
    方法或者使用正则表达式。
  • 例如,如果要按空格分割并过滤掉空字符串:
const parsedStrings = inputText.trim().split(/\s+/).filter(str => str.length > 0);

此方法允许您从文本区域中提取单个单词或行以进行进一步处理。

© www.soinside.com 2019 - 2024. All rights reserved.