好了,这就是我想要做的事:我试图使用PHP开发什么本质上是一个降价实施的一小集,不值得用一个完整的降价类。
我基本上需要做str_replace函数,但是对于交替针的每次出现替换字符串,这样才能处理的开启和关闭的HTML标签。
例如,斜体字是在一对像*此*星号,和代码块由相同的`this`反引号包围。
我需要更换一对与开口HTML标签对应的字符的第一次出现,并与结束标记的第二个。
如何做到这一点任何想法? 我想通了某种正则表达式将参与...
好了,这就是我想要做的事:我试图使用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>";
}