从文本中的方括号 key=value 占位符获取值

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

我想从字符串中的占位符获取值。

$string = "blah blah blha lorem ipsum [get_this_value=10] more lorem ipsum";

我想要一个返回“10”作为结果数组的唯一元素的函数。

多个占位符是可能的,多元素结果是理想的。

$string = "blah blah blha lorem ipsum [get_this_value=10] more lorem ipsum [get_this_value=9] etc etc";

结果:

array(10, 9)

php regex string-matching placeholder text-extraction
2个回答
2
投票

首先你应该了解正则表达式。我强烈推荐本教程

然后您可以在 PHP 文档中阅读一些 PHP 特定的正则表达式问题。

但是为了让您开始,这可以解决您的问题:

preg_match_all("/\[[^\]=]*=(\d+)\]/", $string, $matches);

现在

$matches[1]
将是您想要的数组。请注意,这并不取决于特定的字符串
get_this_value

为了让您通过链接页面实际自学一些正则表达式,我不会详细解释这个正则表达式,而只是告诉您我使用过的概念。未转义的方括号

[...]
标记一个字符类。在这种情况下(由于
^
)一个否定
\d
是一个内置字符类
+
是一个重复量词。括号
(...)
标记一个捕获组


1
投票
<?php
$string = "blah blah blha lorem ipsum [get_this_value=10] more lorem [get_this_value=13] ipsum";

preg_match_all("~\[get_this_value=(\d+)\]~i", $string, $matches);
print_r($matches);
/*

Array
(
    [0] => Array
        (
            [0] => [get_this_value=10]
            [1] => [get_this_value=13]
        )

    [1] => Array
        (
            [0] => 10
            [1] => 13
        )

)
*/
© www.soinside.com 2019 - 2024. All rights reserved.