想法是从以下字符串中获取值。
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/