php - 如何获取自定义标签的值和标签之间的值

标签 php regex arrays

想法是从以下字符串中获取值。

String: Server has [cpu]4[cpu] cores and [ram]16gb[ram]

我需要动态获取标签值和标签之间的内容:[*]*[*]

之间的内容无关紧要

输出:应该是一个数组,如下所示

Array(
    'cpu' => 4,
    'ram' => '16gb'
)

正则表达式模式有很多问题。任何帮助将不胜感激。

编辑:标签之间的值或标签本身可以是任何东西 - 字母数字或数字。

示例字符串只是一个示例。标签可以无限次出现,因此需要动态填充数组,而不是手动填充。

最佳答案

我的 PHP 生锈了,但也许:

$str = "Server has [cpu]4[cpu] cores and [ram]16gb[ram] and [memory]2tb[/memory]";
$matches = array();
preg_match_all('/\[(\w+)\]([^\[\]]+)\[\/?\w+\]/', $str, $matches);
$output = array_combine($matches[1], $matches[2]);

详细信息:

  • [] 之外的任何内容都可以作为标记出现在 [] 中。
  • 除了 [] 之外的任何内容都可以作为标签的值
  • 结束标签不需要与开始标签匹配。您可以使用反向引用,但它会区分大小写。

关于php - 如何获取自定义标签的值和标签之间的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13448450/

相关文章:

php - 超时或重新激活 PHP 中的数据库条目

PHP7 + curl (SSL/TLS) 给出 502 Bad Gateway

javascript - 如何用正则表达式替换图像 URL(纯文本)

python - 十六进制和其他一些字符串的正则表达式

javascript - 使用多个键过滤数组

PHP 从构造函数中重新抛出异常

php - 查看属性数组

javascript - 匹配和捕获标题的正则表达式

javascript - 数组到字符串转换,Php到js

c - 如何在 C 中创建数字网格