0

印刷用の記事からコンテンツを取り除くフォーマットツールを作成しています。デモはここで見ることができます。完全なソースはここで入手できます。

現在、ツールは書式設定を削除し、使用して段落を保持することもできますnl2br。私がやりたいのは、コンテンツを左にシフトし、コンテンツ間に区切りがある場合にのみ段落を含めることができるようにすることです。

例えば:

これ
は 最初の
段落 です

2番目の段落

になる:

これが最初の段落です

2番目の段落

正規表現を使用してこれを試し、最後に2つのスペースがあるかどうかを確認しましたが、機能しませんでした。サンプルコードは次のとおりです。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;

これに関するどんな助けも素晴らしいでしょう

編集:例を含める

POST textbox="こんにちはジェーン

元気ですか

すべてが順調であることを願っています」;

ほとんどのテキストは電子メールやその他のソースから送信されますが、基本的には非常に性的なものである必要があります。

4

2 に答える 2

1

必要な正規表現は、

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

スペースに置き換えます。

アップデート

ちょっとした訂正、


$text ="This
is
a
paragraph  

Second Paragraph";

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

        }

echo $text2;
于 2011-03-12T22:14:56.567 に答える
1

あなたはこれを書くことができます

$text = preg_replace('@\n([a-z])@Us', ' \1', trim($text));
于 2011-03-12T19:36:07.360 に答える