【问题标题】:Getting another value with regular expression with preg_split使用 preg_split 使用正则表达式获取另一个值
【发布时间】:2023-03-02 21:37:02
【问题描述】:

我被以下问题困住了几个小时。我有自己的 cms,我使用简码 [plugin-pluginname] 来激活插件。现在我想在该短代码中分配一个组,该组稍后在包含一次文件中用作查询的变量以选择该特定 ID。

此刻,我得到了以下代码:

$regex = '~\[plugin-([^]]+)]~';
        $content_one = htmlspecialchars_decode($page['content_one']);
        $parts = preg_split($regex, $content_one, -1, PREG_SPLIT_DELIM_CAPTURE);

        foreach($parts as $k => $v){
            if($k & 1)
                include_once('plugins/'.$v.'/'.$v.'.php');
            else
                echo htmlspecialchars_decode($v);
        }

这会检查[plugin-testplugin](以testplugin 为例)的位置并包含该特定文件。现在我想写这样的东西[plugin-testplugin 2]where不仅上面的代码当然仍然有效,而且数字存储在一个变量中,可以使用查询SELECT * FROM 'database' WHERE 'group' = "'.$var_from_shortcode.'"

欢迎任何帮助和解答来解决这个问题!

【问题讨论】:

  • 在这种情况下考虑使用preg_replace_callback 而不是preg_split
  • 我认为 preg_replace_callback 可能是答案,但它的教程有点难。不确定我会出去,但我现在要试试!
  • 没你想的那么难,先试试一两个简单的测试。
  • 测试相当简单,但实现不工作。也许我可以在早上想得更新鲜。已经非常感谢了!
  • 如果字符串中可以有多个[shortcodes],我可以做到这一点吗?

标签: php regex preg-split


【解决方案1】:

您可以使用this regex 然后将第 1 组的值保存在变量中吗?

\[plugin-[A-Za-z ]*(\d+)?\]

或者使用这个正则表达式找到[plugin-testplugin 2] 然后使用\d* 找到其中的数字?

【讨论】:

  • 如何在不停止 foreach 循环的情况下仅获取单个变量中的数字?我尝试的一切要么停止循环,要么不存储变量
  • 您是否在与您读取变量的范围相同的范围内声明了变量?如果你想在 foreach 循环之外读取它,我认为你必须在它之外声明变量,这样它就不会被破坏。
  • 每个循环中可以有多个[shortcode],所以为了得到它们我需要循环它们对吗?
  • 你能在我的问题中详细说明你的答案吗?我走的很好,但是当我想要数字的值时,foreach 循环会中断
猜你喜欢
  • 1970-01-01
  • 2019-06-24
  • 1970-01-01
  • 2016-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-31
  • 1970-01-01
相关资源
最近更新 更多