如何用PHP在文本段落末尾添加{{id}}符号?
如何用PHP在每个段落末尾添加
{{id}}符号? 首先得明确「段落」的定义——这里默认你的段落是以两个连续换行符(Markdown标准段落分隔方式)或者单个换行来区分的,下面给你几种实用的实现方案:
方案1:精准处理标准Markdown段落
如果你的文本是用两个换行分隔段落的,用这个方法最稳妥:
<?php // 原始文本 $originalText = <<<TEXT Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iste mollitia similique, blanditiis quisquam suscipit optio quam culpa odit ad magni sunt officiis, recusandae deleniti alias, natus commodi sed expedita labore. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quae distinctio atque, eos quo. Autem commodi dicta, numquam natus illum recusandae quos! Veniam nulla et temporibus necessitatibus vero recusandae tempora saepe! TEXT; // 按至少两个换行分割段落,同时去掉首尾空白 $paragraphs = preg_split('/\n{2,}/', trim($originalText)); // 给每个段落末尾追加{{id}},再重新拼接成段落格式 $modifiedText = implode("\n\n", array_map(function($para) { return rtrim($para) . ' {{id}}'; }, $paragraphs)); // 输出结果 echo $modifiedText; ?>
方案2:处理单个换行分隔的文本
如果你的段落是用单个换行符分开的,可以用正则快速替换:
<?php $originalText = "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iste mollitia similique, blanditiis quisquam suscipit optio quam culpa odit ad magni sunt officiis, recusandae deleniti alias, natus commodi sed expedita labore.\nLorem ipsum dolor sit amet, consectetur adipisicing elit. Quae distinctio atque, eos quo. Autem commodi dicta, numquam natus illum recusandae quos! Veniam nulla et temporibus necessitatibus vero recusandae tempora saepe!"; // 替换每个换行前的内容,追加{{id}}后保留换行 $modifiedText = preg_replace('/(.*?)\n/', '$1 {{id}}\n', $originalText); // 单独处理最后一段(没有尾随换行的情况) $modifiedText = rtrim($modifiedText) . ' {{id}}'; echo $modifiedText; ?>
方案3:处理HTML格式的段落
如果你的文本是带<p>标签的HTML内容,别用正则硬怼,用DOM操作更安全:
<?php $htmlText = '<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iste mollitia similique, blanditiis quisquam suscipit optio quam culpa odit ad magni sunt officiis, recusandae deleniti alias, natus commodi sed expedita labore.</p><p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quae distinctio atque, eos quo. Autem commodi dicta, numquam natus illum recusandae quos! Veniam nulla et temporibus necessitatibus vero recusandae tempora saepe!</p>'; $dom = new DOMDocument(); // 加载HTML时避免自动添加<html>/<body>标签 $dom->loadHTML($htmlText, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); // 遍历所有p标签,给内容末尾加{{id}} $paragraphs = $dom->getElementsByTagName('p'); foreach ($paragraphs as $p) { $p->nodeValue = rtrim($p->nodeValue) . ' {{id}}'; } // 输出处理后的HTML echo $dom->saveHTML(); ?>
小提示:如果原始文本里有多余的空格或空行,建议先用
trim()或者正则清理一下,避免{{id}}前面出现不必要的空白哦。
内容的提问来源于stack exchange,提问作者Tatata
相关产品推荐
相关产品推荐

