Форматировать текст слева - PullRequest
0 голосов
/ 12 марта 2011

Я создаю инструмент форматирования, который удаляет содержимое из статей для печати.Демо можно увидеть здесь .Полный исходный код доступен здесь .

Прямо сейчас инструмент отсекает форматирование и может также сохранять абзацы с помощью nl2br Что я хотел бы сделать, так это уметь сдвигать содержимое вслева и имеют только абзац, если есть разрыв между контентом.

например:

Этот
является

первым
абзацем

Вторым абзацем

Становится:

это первый абзац

Второй абзац

Я попробовал это с помощью регулярных выражений, чтобы проверить, было ли два пробела вконец, но это не сработало.Вот пример кода: HTML:

<form method="post" action="">
    <textarea cols="68" rows="21" name="textinput"></textarea><br/>
    <input type="checkbox" name="keep_paragraphs" value="true" checked /> Keep Paragraphs<br/>
    <input type="checkbox" name="shift_left" value="true" /> Remove whitespace after line unless it ends in two spaces<br/>
    <input type="submit" value="Submit" />
    </form>

PHP:

$text= $_POST['textinput'];
        $p= $_POST['keep_paragraphs'];
        $lb= $_POST['shift_left'];
        if(get_magic_quotes_gpc()){
        $text = stripslashes($text);
        // strip off the slashes if they are magically added.
        }
        $text = htmlentities($text);
        //if we should keep formatting
        if($p=="true"){
            $text =nl2br($text);
        }
        if($lb=="true"){
            $text = preg_replace('/\s+/', ' ', trim($text));
        }
echo $text;

Любая помощь по этому вопросу будет

РЕДАКТИРОВАТЬ: includeпример

POST textbox = "Привет Джейн

Как у тебя дела сегодня

Надеюсь, все хорошо";

Mostтекст будет приходить из электронных писем и других источников, в основном он должен быть супер-гендерным.

Ответы [ 2 ]

1 голос
/ 13 марта 2011

Необходимое регулярное выражение:

/(?<!\r\n)\r\n(?=\w)/

замените его пробелом.

Обновите

Aнебольшая коррекция,


$text ="This
is
a
paragraph  

Second Paragraph";

$lb = "true";
if($lb=="true"){
            $text2 = preg_replace('/(?<!\r\n)\r\n(?=\w)/', ' ', trim($text));

        }

echo $text2;
1 голос
/ 12 марта 2011

Вы можете написать это

$text = preg_replace('@\n([a-z])@Us', ' \1', trim($text));
...