如何用PHP正则表达式为LaTeX数学公式包裹自定义HTML标签
PHP正则匹配包裹LaTeX公式实现方案
核心逻辑
你需要匹配的是用\(和\)包裹的行内LaTeX公式,直接使用PHP的preg_replace函数做全局替换即可实现需求。
完整实现代码
<?php // 输入字符串示例 $input = '<p><code>y = x2 or \(x = \sqrt{y}\) . For all \(y \geq 0\), x is defined. Thus, y is set of all non-negative and real number. Hence, range is \(y \geq 0\) or [0, ∞).</code></p>'; // 正则替换逻辑 $pattern = '/\\\\\(.*?\\\\\)/'; $replace = '<math>$0</math>'; $output = preg_replace($pattern, $replace, $input); // 输出结果 echo $output; ?>
规则说明
- 正则里的
\\\\会经过两层转义:PHP字符串层将两个反斜杠转义为一个,正则引擎层再将两个反斜杠匹配为文本中的一个反斜杠,因此\\\\\(对应匹配文本中的\( .*?是非贪婪匹配规则,确保只匹配到最近的\)为止,不会出现跨多个公式匹配的问题- 如果存在跨行公式场景,可在正则末尾加
s修饰符,即/\\\\\(.*?\\\\\)/s,让.可以匹配换行符 - 替换内容中的
$0代表正则匹配到的完整公式内容,不需要额外拆分捕获组
运行上述代码输出的结果和你给出的预期结果完全一致。
内容的提问来源于stack exchange,提问作者Suresh Chand
相关产品推荐
相关产品推荐

