2016-12-02 3 views
-2

私はPHPとWebプログラミングが初めてです。文字列の一部である< and >を許可して表示します。私は電子メールメッセージシステムで作業しており、メッセージはHTMLフォーマットで表示されます。誰かが<の中のテキストを含むメールを送信した場合はどうでしょうか?どうすればいいですか?HTMLコードを含むタグをタグとして読み込みますが、引用符で囲まれたものは&lt;&gt;に変更されますか?PHP-< and >

文字の入力を制限したり、テキスト領域にこれらの文字を貼り付けるのは簡単です。

ありがとうございます!

+1

[PHP文字列は< and >文字を許可していません](http://stackoverflow.com/questions/8207029/php-string-doesnt-許可と文字) –

答えて

1

リテラル文字として「<」/「>」をいつレンダリングするのかと、HTMLタグの一部として許可するのは難しいことですが、これはあまり避けるべきことですできるだけ。

あなたの電子メールに自分のHTMLマークアップを挿入することを禁止することをお勧めします。htmlentities()を使用すると、すべての文字を対応するエンティティに変換して表示できます。

ユーザーにスタイルのコンテンツを提供するように設定されている場合は、Markdownなどのように見て、実際のHTMLコードを記述しないようにします(ワームの缶を開くように)。代わりに、文字は、異なる基本的なスタイリングを示すように、パーサーを使用してプログラムによって適用されますParsedown

+0

私の仕事は、スタイリングを追加することです。電子メールシステムは、htmlがなくても機能し、htmlspecialcharsを使ってhtmlを取り除きます。私がやったことは、(xssを防ぐためにhtmlpurifierを使って)削除されていて、これらの文字だけを除いてはうまく動作します:< and >。テキストの入力や貼り付けを防ぐためにtextareaを制限しますが、メッセージを送信するだけです。メッセージを受信したらどうなりますか? < – TryingToCode

+0

のような電子メールアドレスのような情報を貼り付けるのは非常に一般的です。私が言ったように、ユーザーに実際のHTMLを書くことはワームの缶を開くことです。 Markdownを使用すると(Stackoverflowのように)HTMLタグが抽象化され、閉じられていないタグなどを残さないようにすることができます。HTMLPurifierがほとんどの仕事をしていて、2つの山括弧の間に電子メールアドレスが含まれる場合のみ、前処理してHTMLエンティティに置き換えるコードを書くことができます。 '$ content = preg_replace( '/ <([^ @] + @ [^ @] +)> /'、 '< $ 1 >'、$ content);'。そしてHTMLPurifierの前にそれを通してコンテンツを実行してください。 –