如何从以加号(+)开头的行创建段落

时间:2011-02-01 22:04:45

标签: php regex parsing text

我正在做一个简单的文本编辑器,我需要处理创建段落。

段落将在WikiDot语法中,长话短说我需要改变:

+ paragraph 1 

更改为     < H1>段< / H1>

++ subparagraph 1 

更改为     < H2>项< / H2>

这在PHP中是怎么做的?

2 个答案:

答案 0 :(得分:3)

扩展@CrayonViolent(在第一次替换中断第二次的情况下):

<?php
  $content = "Hello, world

+ Big Heading

++ Smaller heading

Additional content";

   function r($m){
     $tag = "h".strlen($m[1]);
     return "<{$tag}>{$m[2]}</{$tag}>";
   }
   $content = preg_replace_callback('/^(\+{1,6})\s?(.*)$/m','r', $content);

   echo $content;
?>

还为正则表达式添加了m(多行)标记,以便更好地匹配,并且只会执行标题<h1><h6>

可以找到工作示例here

答案 1 :(得分:2)

$content = preg_replace ("~^\+\+(.*?)\n\n~",'<h2>$1</h2>',$content);
$content = preg_replace ("~^\+(.*?)\n\n~",'<h1>$1</h1>',$content);