好了,这就是我想要做的:我试图使用PHP开发什么本质上是一个的微小的减价实现的子集,不值得用一个完整的降价类

我需要基本上做str_replace函数,但交替替换字符串用于针的每次出现,以便处理所述开闭HTML标签。

例如,斜体字是在一对像*此*星号,和代码块由反引号像`this`。

包围的

我需要更换一对与开口HTML标签对应的字符的第一次出现,和第二与结束标记。

这是如何做到这一点任何想法?我想通了某种正则表达式将参与......

有帮助吗?

解决方案

个人而言,我遍历*\的每次出现计数器,并且基于所述计数适当的HTML标签替换的字符(例如,如果计数为偶数和你打星号,代替它与<em>,如果是奇数,然后用</em>等)取代它。

但是,如果你确定,你只需要支持几个简单的各种标记,然后为每个正则表达式可能是最简单的解决方案。像这样为星号,例如(未测试的):

preg_replace('/\*([^*]+)\*/', '<em>\\1</em>', $text);

和类似用于反斜线的东西。

其他提示

您要寻找的是更常见的由状态机或词法/语法分析器处理。

这是难看,但它的工作原理。捉:只用于一次一个图案类型

$input = "Here's some \\italic\\ text and even \\some more\\ wheee";

$output = preg_replace_callback( "/\\\/", 'replacer', $input );

echo $output;

function replacer( $matches )
{
    static $toggle = 0;
    if ( $toggle )
    {
        $toggle = 0;
        return "</em>";
    }
    $toggle = 1;
    return "<em>";
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top