Как сделать абзац из строки, начинающейся со знака плюс (+) - PullRequest
2 голосов
/ 02 февраля 2011

Я делаю простой текстовый редактор, который мне нужен для создания абзацев.

Параграфы будут в синтаксисе WikiDot, короче говоря, что мне нужно изменить:

+ paragraph 1 

изменяется на

абзац

++ subparagraph 1 

изменяется на

подпункт

Как это сделать в PHP?

Ответы [ 2 ]

3 голосов
/ 02 февраля 2011

Чтобы расширить @ CrayonViolent's (в случаях, когда первая замена прерывает вторую):

<?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>.

Рабочий пример может быть расположен здесь

2 голосов
/ 02 февраля 2011
$content = preg_replace ("~^\+\+(.*?)\n\n~",'<h2>$1</h2>',$content);
$content = preg_replace ("~^\+(.*?)\n\n~",'<h1>$1</h1>',$content);
...