我正在尝试在我的网站上用 PHP 创建自己的短代码(直接 PHP,无 CMS)。我有一个大型数据库,想向许多文本字段添加短代码,以使链接和其他项目更容易。我知道如何使用 PHP 替换文本,但我正在尝试实现一个复杂的代码...下面是一些文本的示例:
$textarea = "a long list of text [item=23] within a large text string<br>And more stuff [item=35]";
我想用
<a href="/item?id=###"> ITEM NUM NAME </a>
替换 [item=###]
为了获取“项目名称”,我将使用 ### 来查询数据库。
所以,基本上,我需要...
<a href="item?id=23">Gumdrop</a>
)。不知道如何对多个实例和不同的项目#执行此操作。如果有人可以提供一些指导,我将不胜感激。
您可以将
preg_replace_callback
与适当的模式一起使用,并且在回调函数的主体中,您可以将 id 替换为名称。
例如:
$replacedText = preg_replace_callback('/\[item=([1-9][0-9]+)\]/', function ($matches) {
$id = $matches[1];
// insert call to your name lookup function here
$name = 'name-of-item-' . $id . '-here';
return '<a href="/item?id=' . $id .'">' . htmlspecialchars($name) . '</a>';
}, $textarea);