You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何拆分字符串并添加额外字符串?基于指定索引与长度实现HTML标签文本格式化

实现字符串指定位置插入HTML标签的方案

这问题我太熟悉了!因为直接从前往后修改字符串会导致后续的索引位置偏移(毕竟插入标签后字符串变长了),所以核心技巧是从后往前处理标记位置。下面用PHP给你写一个完整的可运行实现:

完整代码示例

<?php
// 原始字符串
$comment_text = 'neethu and Dilnaz Patel check this';

// 标记数组(整理成一个数组列表方便处理)
$markers = [
    ['start_index_key' => 0, 'string_length' => 6],
    ['start_index_key' => 11, 'string_length' => 12]
];

// 关键:按起始索引从大到小排序,实现从后往前处理
usort($markers, function($a, $b) {
    return $b['start_index_key'] - $a['start_index_key'];
});

// 初始化格式化后的字符串为原始字符串
$formattedText = $comment_text;

// 遍历每个标记,替换对应位置的内容
foreach ($markers as $marker) {
    $start = $marker['start_index_key'];
    $length = $marker['string_length'];
    
    // 截取需要包裹的子字符串
    $targetStr = substr($formattedText, $start, $length);
    // 替换成带标签的内容
    $replacement = '<span>@' . $targetStr . '</span>';
    
    // 拼接新字符串:前面部分 + 替换内容 + 后面部分
    $formattedText = substr($formattedText, 0, $start) . $replacement . substr($formattedText, $start + $length);
}

// 输出转义后的结果(符合你要的HTML实体格式)
echo htmlspecialchars($formattedText);
?>

代码说明

  • 排序标记数组:用usort把标记按起始索引从大到小排序,这样先处理靠后的位置,避免前面插入标签后导致后续索引偏移。比如先处理索引11的内容,再处理索引0的,后者的位置不会被前者的修改影响。
  • 截取与替换:通过substr精准截取目标子串,替换为带<span>和@的格式,再拼接回原字符串。
  • HTML转义:用htmlspecialchars转义结果,就能得到你需要的&lt;span&gt;这类HTML实体格式,避免直接输出HTML标签的风险。

运行这段代码后,会输出你期望的结果:

&lt;span&gt;@neethu&lt;/span&gt; and &lt;span&gt;@Dilnaz Patel&lt;/span&gt; check this

内容的提问来源于stack exchange,提问作者Sandhya Srishti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 20:59:06