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

如何实现符合指定规则的字符串转HTML的PHP函数?

正确实现字符串转有效HTML的函数

我看了你写的代码,发现几个小问题:比如替换__的时候额外加了空格,会破坏原文本的连贯性;还有标签没正确闭合(比如<strong>对应需要</strong>,不是重复开标签);另外用str_replace处理成对标记容易出现不匹配的情况,比如多个__会被逐个替换,导致标签结构混乱。

下面给你一个靠谱的实现方案,用正则表达式来处理成对的标记,确保替换准确:

function convertToHtml($str) {
    // 先处理__包裹的内容,替换为<strong>标签
    $str = preg_replace('/__(.+?)__/', '<strong>$1</strong>', $str);
    // 再处理**包裹的内容,替换为<i>标签
    $str = preg_replace('/\*\*(.+?)\*\*/', '<i>$1</i>', $str);
    // 最后处理_C替换为<br/>
    $str = str_replace('_C', '<br/>', $str);
    
    return $str;
}

// 测试你的示例字符串
$inputStr = "Hi my name is __Matteo__and, _C I'm **Italian**";
$outputStr = convertToHtml($inputStr);

echo $outputStr;

代码解释:

  • 用preg_replace处理成对标记:__(.+?)__是一个非贪婪正则,会精准匹配__包裹的内容,$1指代匹配到的内容,这样能确保每个__都正确对应成<strong>和</strong>标签。
  • 同理,\*\*(.+?)\*\*匹配**包裹的内容,替换为<i>和</i>(注意这里*在正则里是特殊字符,需要用\转义)。
  • 最后处理_C的替换,因为它是单个独立的标记,用str_replace就足够了,而且放在最后不会干扰前面的成对标记处理。

测试上面的代码,输出结果会是:

Hi my name is <strong>Matteo</strong>and, <br/> I'm <i>Italian</i>

完全符合你要求的转换规则~

内容的提问来源于stack exchange,提问作者Matteo Bruni

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:13:13