存储preg_split中的变量,并将其与单词组合使用


Store variable from preg_split, and use it it comination with the word

我仍然面临一个重大问题,这在之前的问题中不幸没有回答。我想做以下事情:

我有一个定制的cms,在那里我想使用短代码来使用插件。它是这样工作的:

this is a text
[plugin-blog]
this is more text
and some more
[plugin-contact]

输出如下:

this is a text
include_once('plugins/blog/blog.php'); <- loads specific file for plugin
this is more text
and some more
include_once('plugins/contact/contact.php'); <- loads specific file for plugin

这是工作很好,但我想要的是从插件有一个特定的id,我想用[plugin-blog 2]调用。我需要存储插件的数量,并在插件的php文件中使用它,如SELECT * FROM 'plugin_db' WHERE 'id' = $value_from_shortcode

我该怎么做?我完全不知道如何处理这个问题。我尝试了所有的东西,但要么循环不再工作,要么数字没有保存在插件名称的组合中。我有以下代码:

$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);
        }

可以使用以下命令检索id和名称:

    foreach($parts as $k => $v){
        if($k & 1) {
            $id = preg_replace('/'D+/', '', $v);
            $v = preg_replace('/'d+/', '', $v);
            echo "id = $id'n";
            include ('plugins/'.$v.'/'.$v.'.php');
        } else {
            echo htmlspecialchars_decode($v);
        }
    }

注意:保留测试$k & 1来处理所有插件

父作用域的变量应该在包含的文件中作为全局变量可用:

给定:下面是test.php

<?php
$foo = "test";
include('./b.php'); 
这是b.p php:
<?php echo $foo;

运行test.php将输出test

在你的例子中,$k$v将在你包含的文件中可用,所以你可以这样做:

if (1 == $k) {
    $id = $v;
    include_once('plugins/'.$v.'/'.$v.'.php');
}

请考虑学习PHP和最佳实践