如何将tex标签转换为php中的html标签或使用正则表达式进行sed?

时间:2018-09-02 16:16:55

标签: php regex sed

我有这个tex:

hello \o{test} how are you?

我想将其转换为:

hello <span>test</span> how are you?

如何?

2 个答案:

答案 0 :(得分:2)

没有正则表达式:使用str_replace()

<?php
$string = 'hello \o{test} how are you?';
echo str_replace(['\o{','}'],['<span>','</span>'],$string);
?>

演示: https://3v4l.org/ttSC2

使用正则表达式并使用preg_replace()

<?php
$re = '/\\\\o\{([^}]+)\}/m';
$str = 'hello \\o{test} how are you?';
$subst = '<span>$1</span>';
echo preg_replace($re, $subst, $str);
?>

演示: https://3v4l.org/FiOKO

答案 1 :(得分:1)

您可以使用以下表达式:

\\o\{([^}]+)}
  • \\o匹配o
  • \{匹配{
  • ([^}]+)捕获组。匹配并捕获}以外的任何内容。
  • }}匹配。

替换为:

<span>\1<\/span>

正则表达式演示here


Sed 实施:

$ echo "hello \o{test} how are you?" | sed -r 's/\\o\{([^}]+)}/<span>\1<\/span>/g'
hello <span>test</span> how are you?

Php 实施:

<?php
$input_lines="hello \o{test} how are you?";
echo preg_replace("/\\\\o{([^}]+)}/", "<span>$1<\/span>", $input_lines);

打印:

hello <span>test<\/span> how are you?