0

私のコードは次のように動作します:

  • テキストがサーバーに送信されます (テキストエリアから)
  • テキストは、trim() を介して実行され、次に nl2br が実行されます

しかし、何が起こっているのかというと<br>、新しい行を追加するのではなく削除するので、

"

something"

になる

"<br>

something"

二重の改行を追加します。このエラーがすべてのフォーマットを台無しにするのを手伝ってください。リクエストに応じてさらにコードを提供できます。

投稿の作成: 短縮された作成方法 (関連するビットのみを表示) 作成方法:

BlogPost::Create(ParseStr($_POST['Content']));

ParseStr が実行されます。

return nl2br(trim($Str));

投稿の表示:

echo "<span id='Content'>".BlogPosts::ParseBB(trim($StoredPost->Content))."</span>";

ParseBB が実行されます。

    $AllowedTags = array(
    //  i => Tag, Tag Replacement, Closing tag
        0 => array("code","pre class='prettyprint'",true),
        1 => array("center","span style='text-align:center;'",true),
        2 => array("left","span style='text-align:right;'",true),
        3 => array("right","span style='text-align:left;'",true)
    );
    $AllowedTagsStr = "<p><a><br><br/><b><i><u><img><h1><h2><h3><pre><hr><iframe><code><ul><li>";
    $ParsedStr = $Str;

    foreach($AllowedTags as $Tag)
    {
        $ParsedStr = str_replace("<".$Tag[0].">","<".$Tag[1].">",$ParsedStr);
        if($Tag[2])
            $ParsedStr = str_replace("</".$Tag[0].">","</".$Tag[1].">",$ParsedStr);
    }


    return strip_tags($ParsedStr,$AllowedTagsStr);

例: 表示内容: 表示内容:

4

2 に答える 2