【问题标题】:PHP: Find and exctract into an array all instances of specific text in a stringPHP:查找字符串中特定文本的所有实例并将其提取到数组中
【发布时间】:2010-08-11 09:40:19
【问题描述】:

我有一个字符串,其中包含多个“占位符”,每个占位符都用以下语法标记:{value}。

我希望能够提取字符串中的每个占位符并将它们加载到数组中。

例如,如果我在这里有这个字符串...“这是一个 {test} 字符串,用于展示我的 {objective}。”

我希望最终结果是一个包含两个值“test”和“objective”的数组。

我对 preg_split 进行了探索,但无法完全理解它。关于如何实现这一点的任何想法?

谢谢!

【问题讨论】:

    标签: php regex string


    【解决方案1】:

    您可以尝试以下方法来获得所需的内容:

    $placeHolders = array();
    if(preg_match_all('/\{([^{}}]+)\}/', $haystack, $matches)) {
        $placeHolders = $matches[1];
    }
    

    由于您没有具体说明在占位符中允许的内容,因此我将正则表达式保持为非常通用。基本上,占位符可以是大括号内的任何内容(大括号本身除外)。

    您可能想要限制更多,例如仅限字母数字字符。在这种情况下尝试:

    '/\{([a-zA-Z0-9]+)\}/'
    

    编辑:正则表达式的资源:@​​987654321@

    【讨论】:

      【解决方案2】:

      我觉得你可以用这个

      preg_match_all('/\{([^\}]+)\}/i', $your_string, $match);
      

      $match[1] 中的所有占位符; 在http://php.net/manual/en/function.preg-match-all.php阅读更多关于该功能的信息

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多