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

Php 存储preg_split中的变量,并将其与单词组合使用,php,foreach,preg-split,Php,Foreach,Preg Split,我仍然面临一个重大问题,不幸的是,在前一个问题中,这个问题没有得到回答。我想做以下工作: 我有一个定制的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

我仍然面临一个重大问题,不幸的是,在前一个问题中,这个问题没有得到回答。我想做以下工作:

我有一个定制的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

父范围中的变量应在包含的文件中作为全局变量提供:

给定:下面是test.php

<?php

$foo = "test";

include('./b.php'); 

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

< p>来自父范围的变量应该作为包含文件中的全局变量可用:

给定:下面是test.php

<?php

$foo = "test";

include('./b.php'); 

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

可以检索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
以处理所有插件。

您可以通过以下方式检索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
以处理所有插件。

您将面临设计非常糟糕、遵循反模式以及对php实际工作方式理解不足的后果。这实际上与preg_split无关,但可能是由于某种原因,您使用二进制运算符代替布尔值?您对$k&1的期望是什么?将其与1进行比较?在php中,您可以改为执行
1==$k
。或者这是奇数检查?因为每个奇数在其二进制表示中都有最后一个1,所以$k&1是我唯一没有自己编写的部分,而是团队中的一名开发人员编写的,这使它能够工作。不知道他做了什么。我对php的了解在这方面有点基础:(我希望有人能帮助我。编辑了&k&1。我不明白他为什么在那里使用了&sign.。
$k&1
是处理所有插件的必经之路。你正面临着非常糟糕的设计和反模式的后果,以及对php如何真正工作的理解不足。这实际上与preg_split无关,但问题是出于某种原因,你能熟练地使用二进制运算符代替布尔值吗?你对
$k&1
有什么期望?将其与1进行比较?在php中,你可以使用
1=$k
。或者这是奇数检查?因为每个奇数在其二进制表示中都有最后一个1?只有$k&1是我自己没有编写的部分,但团队中的一名开发人员,我对php的了解基本上是这样的:(我希望有人能帮助我。编辑了&k&1。我不明白他为什么在那里使用了一个&sign.。
$k&1
是处理所有插件的必备工具。我已经用过了,但我的主要问题是将id与字符串分开(现在,它的输出包括_once('plugins/blog 2/blog 2.php'),当然找不到)。即使我分离id,它仍然需要知道它是插件名称的一部分。我正忙于学习php,但在这一点上我是空白的,特别是我已经使用它了,但我的主要问题是将id与字符串分离(现在,它的输出包括_once('plugins/blog 2/blog 2.php'),当然找不到它)。即使我分开id,它仍然需要知道它是插件名称的一部分。我正忙于学习PHP,但在这一点上我是空白的特别完美!就是这样!我用preg_replace做了很多尝试,但没有找到解决方案。非常感谢!我现在尝试实现多个短代码,但不幸的是不起作用。为什么我可以发生了什么?啊,我现在明白了。我当然在插件本身的查询中出错了,因为我对不同的键多次使用同一个查询。不知道如何处理,但我想这可以简单地解决。知道我的意思吗^^?@Saypontigohe:我不确定我是否理解,但你可以在循环中调用查询。我正在调用e在文件内部进行查询,但由于while循环只能使用一次,因此它不会为不同的组id多次显示相同的插件(
$id
)。我正在尝试找到解决方案,但我认为这只是我还没有看到的一个简单步骤。你的答案已经帮了我的忙!太好了!就是这样!我尝试了很多preg_replace,但没有找到解决方案。非常感谢!我现在尝试实现多个短代码,但不幸的是不起作用。为什么会发生这种情况?啊,我现在明白了我当然在插件本身的查询中出错了,因为我对不同的键多次使用同一个查询。我不知道如何处理这个问题,但我想这可以简单地解决。知道我的意思吗^^?@Saypontigohe:我不确定我是否理解,但你可以在循环中调用查询。我在文件中调用查询e、 但是由于while循环只能使用一次,它不会为不同的组id(
$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);
        }
    }