题
好了,这就是我想要做的:我试图使用PHP开发什么本质上是一个的微小的减价实现的子集,不值得用一个完整的降价类。 p>
我需要基本上做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>";
}
不隶属于 StackOverflow