【问题标题】:Split a variable into other variables将一个变量拆分为其他变量
【发布时间】:2016-04-06 03:23:18
【问题描述】:

大家好,互联网上很棒的人!我需要帮助 :) 我有一个 php rcon 脚本,这个脚本将 rcon 的结果保存到一个名为 results 的变量中,这是一个例子。

结果 = 显示 lluiscab 的 2 个跟踪目标:- rcon: 4 (rcon)- test: 5555 (test)

我想将 rcon 之类的变量设置为 4 并测试为 5555。 我使用了在网上找到的爆炸和其他想法,但我无法使其工作。有人知道怎么做吗?

编辑:这个变量会发生变化,所以,有时我可以拥有 rcon、test 和硬币,有时只有 rcon

【问题讨论】:

  • 抱歉,您的问题完全不清楚。请编辑您的问题(有一个edit 按钮...)并解释您当前拥有的确切数据。最好是转储当前变量,这样我们就可以看到它的结构和内容。
  • 请显示真实输入样本(真实变量值)和期望输出样本(所需变量和值)。
  • 我说过 -.-' 我有 $results = 显示 lluiscab 的 2 个跟踪目标:- rcon: 4 (rcon)- test: 5555 (test) 我想要 $rcon = 4 和 &test = 5555 或与数组相同

标签: php arrays variables


【解决方案1】:

您可以为此使用正则表达式。

preg_match('/rcon:\s*(\d+).*test:\s*(\d+)/', $line, $match);
$rcon = $match[1];
$test = $match[2];

\d+ 匹配一个数字序列,将() 放在它周围使其成为一个捕获组。 $match 包含输入行中被正则表达式匹配的部分,$match[N] 包含第 N 个捕获组。

如果您需要捕获类似于word: number 的任何内容,可以使用preg_match_all 和关联数组。

preg_match_all('/(\w+):\s*(\d+)/', $line, $matches, PREG_SET_ORDER);
$results = array();
foreach ($matches as $match) {
    $results[$match[1]] = intval($match[2]);
}

对于示例输入,这将创建

$results = array(
    'rcon' => 4,
    'test' => 5555
);

DEMO

【讨论】:

  • 问题是,这个变量发生了变化,所以,有时我可以有 rcon、test 和 coin 有时只有 rcon
  • 我添加了一个更通用的方法,将结果放入关联数组中。
  • $line 是要拆分的变量吗?我用这个得到空值
  • @Barmar 我想你忘了关闭 preg_match 调用的括号。
  • @lluiscab 我已经修复了preg_match_all 代码中的一些错误。我现在已经对其进行了测试,并且可以正常工作。
猜你喜欢
  • 2020-08-31
  • 2018-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-25
  • 1970-01-01
  • 2020-05-24
  • 2021-12-01
相关资源
最近更新 更多