在PHP中创建短代码,就像在WordPress中那样

时间:2015-05-07 07:09:29

标签: php wordpress

我们正在努力为我们创建一个基本系统。在我们想要创建像[gallery id="1"]这样的短代码的地方,我们已经创建了这种短代码方式。

但是当它出现在以下内容之间时:

<h1>Some Title</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer purus purus, scelerisque ut ex non, pharetra interdum tellus. Aenean sed libero a ipsum vestibulum feugiat quis quis magna. Mauris a condimentum mi, et feugiat leo.</p>
[gallery id="1"]

这是我的模板从编辑器看起来的样子。我如何阅读相关[gallery id="1"]并使其成为像这样的函数

gallery(1)

有什么方法可以做到这一点吗?我在这里使用的是WYSIWYG编辑器,数据保存在MySQL数据库中。

3 个答案:

答案 0 :(得分:1)

答案的开头:你必须使用这样的正则表达式:
#\[gallery id\=\"([0-9]+)\"\]#
这将获得所有[gallery id =&#34; XXX&#34;],()将允许您捕获实际数字,然后调用您的gallery(XXX)函数

答案 1 :(得分:0)

我认为RegEx模式应该有用。 对不起,我在RegEx上并不擅长,但这是我的模式:

http://regexr.com/3auv2

答案 2 :(得分:0)

我创建了一个与框架无关的库,以支持纯PHP项目中的[shortcodes]https://github.com/thunderer/Shortcode。你只需要创建库实​​例,为你想要使用的短代码注册名称处理程序,你就可以了。

你的案例会像这样解决(我从README中拿了这个例子):

// put those in the use block on top of your file:
use Thunder\Shortcode\Extractor;
use Thunder\Shortcode\Parser;
use Thunder\Shortcode\Processor;
use Thunder\Shortcode\Shortcode;

// code below does the magic:
$processor = new Processor(new Extractor(), new Parser());
$processor->addHandler('gallery', function(Shortcode $s) {    
    // return here any HTML code you need

    return $s->getParameter('id'); // this will return "id" parameter
});

$processor->process('[gallery id="2"]'); // will return "2"