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

PHP中如何高亮代码字符串内的函数名?

高亮代码字符串中的函数名解决方案

我来帮你搞定这个问题!你想用preg_replace()高亮代码里的函数名,核心是写对正则表达式,精准匹配函数名和后面的括号,然后替换成带颜色标签的格式。

针对你给出的例子,我们可以这样操作:

步骤1:编写精准的正则表达式

我们需要捕获目标函数名(比如sqrt)和紧跟的左括号(,这样替换时既能给函数名加颜色标签,又能完整保留括号及后面的代码内容。针对你的需求,正则可以这么写:

'/(\b(sqrt|round)\b)(\()/'
  • \b是单词边界,确保我们匹配的是独立的函数名,不会误匹配其他字符串里的子串(比如不会把asqrt里的sqrt错当成目标函数)
  • (sqrt|round)是你想要高亮的函数名集合,多个函数用|分隔即可
  • (\()专门捕获左括号,替换时会原样保留它

步骤2:用preg_replace()完成替换

把捕获到的函数名用<font color='red'>$1</font>包裹,再拼接上捕获的左括号$3,完整的PHP代码示例如下:

$text = "t <- ind.t.test$statistic[[1]] df <- ind.t.test$parameter[[1]] r <- sqrt(t^2/(t^2+df)) round(r)";
// 高亮sqrt和round函数
$highlightedText = preg_replace('/(\b(sqrt|round)\b)(\()/', '<font color="red">$1</font>$3', $text);

echo $highlightedText;

最终效果

替换后你会得到这样的结果:

t <- ind.t.test$statistic[[1]] df <- ind.t.test$parameter[[1]] r <- sqrt(t2/(t2+df)) round(r)

扩展说明

如果你需要高亮更多函数,只需要在正则的函数列表里添加即可,比如要加mean和sum,就改成(sqrt|round|mean|sum)。如果想匹配所有符合R函数命名规则的函数(字母/下划线开头,由字母、数字、下划线组成),可以用更通用的正则:

'/(\b[a-zA-Z_][a-zA-Z0-9_]*\b)(\()/'

不过这个会匹配所有符合规则的函数名,可能会包含你不想高亮的部分,按需选择就好。

内容的提问来源于stack exchange,提问作者D. Studer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:23:25