ユーザがデータベースに記事を投稿するためのシステムを用意しました。それはHTMLだけなので、改行があるたびに<br />
とタイプすることを知りたくないので、入力にPHP関数nl2br()
を使用しています。PHPで送信されたテキストの改行の変換
私はまた、記事をフォームに戻す記事変更ツールを提供しています(これは別のページです)。これを行うにあたり、要素は<br />
でも見られました(改行はまだあります)。
の要素を修正するには(私が期待していたとにかく)、このサイトの別の質問で見つけたpreg_replace('/<br(\s+)?\/?>/i', "\n", mysql_result($result,$i,"content"))
を追加しました。 <br />
要素を削除する作業を行いますが、改行で置き換えられているので改行は元々残っていたはずですが、投稿が編集されるたびに段落の間隔がますます広がります毎回。これはユーザーが理解できないものです。一例として、
、私は資料の提出フォームに次のように入力します言う:
Hello, this is my article.
I am demonstrating a new line here.
これはに変換されます。そこに改行文字が変換されたにもかかわらず、という
Hello, this is my article.<br />
I am demonstrating a new line here.
お知らせ、まだテキストの改行です。編集フォームでは、<br />
は改行に変換され、次のようになります。<br />
は改行に変換された
Hello, this is my article.
I am demonstrating a new line here.
ので、しかし、改行はすでにありました。だから私はそれが最初にこのようなものに変換するために私は何を期待してることはあると思います:
Hello, this is my article.<br />I am demonstrating a new line here.
私は思ったんだけど...、元の改行を維持することからnl2br()
機能を停止する方法はありますか?それはWindowsの\r\n
文字と関係があるでしょうか?
あなたのユーザーがHTMLを信頼でき、絶対に信頼できるものでなければ、おそらく重大な頭痛に冒されているでしょう。ほとんどの人があなたのウェブサイトにHTMLをアップロードできるようにすると、ほとんどフィルタリングされずに、XSSの穴が広がっていて、おそらくはソーシャルエンジニアリングのエントリーポイントがたくさんあるからです。 – tdammers
最初に記事を送信すると、新しい行を
に変換する必要があるのはなぜですか?記事を表示するときに書式を設定できます。 –
@tdammers私が現在フィルタリングしていない唯一の理由は、以下のようにしたいからです: '
'と ' ' 私は、それ以外は何も、HTMLを自分のサイトに提出することは歓迎されないことに非常に同意するので、私は喜んでこれを行うだろう。 私は、記事を提出できる人は招待のみの登録プロセスによって制限されていると言及する必要がありますが、それでも機会を与えてもまだ修正するつもりです。 – muttley91