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

时间:2016-11-14 12:06:49

标签: php foreach preg-split

我仍然面临一个重大问题,在之前的一个问题中,我很难回答。我想做以下事情:

我有一个定制的cms,我想使用短代码来使用插件。它的工作原理如下:

let filtered = exercises.filter { $0.name == searchText }

它输出的是:

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

这很好用,但我想要的是从插件中获取一个特定的id,我想用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 调用它。我需要存储插件的编号,稍后在插件的php文件中使用它,如[plugin-blog 2]

我该怎么做?关于如何处理这个问题我完全是空白的。我尝试了所有的东西,但要么循环不再工作,数字不会与插件名称的保存一起保存。我有以下代码:

SELECT * FROM 'plugin_db' WHERE 'id' = $value_from_shortcode

2 个答案:

答案 0 :(得分:2)

您可以使用以下命令检索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处理所有插件。

答案 1 :(得分:1)

来自父作用域的变量应该可以作为包含文件中的全局变量使用:

鉴于:以下是test.php

<?php

$foo = "test";

include('./b.php'); 

这是b.php:

<?php echo $foo;

正在运行test.php会输出test

因此,在您的情况下$k$v将在您包含的文件中提供,因此您可以执行类似的操作:

if (1 == $k) {
    $id = $v;

    include_once('plugins/'.$v.'/'.$v.'.php');
}

请考虑学习PHP和最佳实践。