请登录后探索更多精彩内容!
第一步,修改article_article.htm中的{dede:field.body/}为{dede:field.body function='body_url(@me)'/}第二部,修改INC/extend.func.php新增函数body_url代码如下:
function body_url($text) {
$datelist = file_get_contents(__DIR__ . '/testlist.json');
// 将 JSON 字符串解码为 PHP 数组
$datelist = json_decode($datelist, true);
if (json_last_error() !== JSON_ERROR_NONE) {
throw new Exception("Invalid JSON string provided.");
}
// 创建一个关联数组来存储替换映射
$replacementMap = [];
foreach ($datelist as $item) {
if (isset($item['text']) && isset($item['textlist'])) {
$replacementMap[$item['text']] = $item['textlist'];
// 使用一个数组来跟踪每个词的替换次数
$replacementCounts = array_fill_keys(array_keys($replacementMap), 0);
// 全局替换计数器,确保总替换次数不超过两次
$globalReplacementCount = 0;
// 分割文本,捕获要替换的词和它们之间的文本
$segments = preg_split('/(' . implode('|', array_map('preg_quote', array_keys($replacementMap))) . ')/', $text, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
$result = '';
$i = 0;
while ($i < count($segments)) {
$segment = $segments[$i];
if (isset($replacementMap[$segment]) && $replacementCounts[$segment] < 1 && $globalReplacementCount < 2) {
// 执行替换
$replacedSegment = $replacementMap[$segment];
// 更新替换次数
if (!isset($replacementCounts[$segment])) {
$replacementCounts[$segment] = 0;
$replacementCounts[$segment]++;
$globalReplacementCount++;
// 将替换后的词添加到结果中
$result .= $replacedSegment;
} else {
// 如果不符合替换条件,直接添加原词到结果中
$result .= $segment;
$i++;
return $result;
这里的$datelist = file_get_contents('testlist'); 会读取本地路面下的testlist文件,testlist文件格式如下:
[
{
"text": "关键词1",
"textlist": "<a href=\"关键词1链接\">关键词1</a>"
},
"text": "关键词2",
"textlist": "<a href=\"//关键词2链接\">关键词2</a>"
}]多的关键词自己新增即可。然后生成文档
暂无评论
请先登录后发表评论!
暂无评论