如何替换字符串中单词的所有偶数匹配?

时间:2019-06-03 11:39:47

标签: php

我正在尝试将Remarkup转换为MediaWiki标记。

在Remarkup中,代码块使用以下语法:

```
some code
```

我想用MediaWiki的代码块语法代替它,如下:

<code>
some code
</code>

如您所见,我不能仅为此使用preg_replace(),因为```的奇数出现应该用<code>代替,甚至偶数出现的是</code>

如何在PHP中做到这一点?

2 个答案:

答案 0 :(得分:6)

将自定义替换逻辑定义为preg_replace_callback的回调,例如:

$count = 0;
$s1 = preg_replace_callback(
    '/```/', 
    function($m) use (&$count) { ++$count; return $count % 2 ? '<code>' : '</code>'; },   
    $s
);

答案 1 :(得分:0)

您应该使用markdown解析器来做到这一点。

ParseDown只是多种选择之一:

$parsedown = new Parsedown();

echo $parsedown->text('
```
some code
```
');

结果将是:<pre><code>some code</code></pre>