現在の位置: ホーム> 最新記事一覧> 誤動作のフォーマットを避けるために、Quoted_printable_decodeをPHPで使用する場合、ラインブレークを正しく処理する方法は?

誤動作のフォーマットを避けるために、Quoted_printable_decodeをPHPで使用する場合、ラインブレークを正しく処理する方法は?

gitbox 2025-07-17
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// この部分は、記事の内容とは何の関係もありません,いくつかの初期化コードまたはコメントを配セットできます</span></span><span>
</span><span><span class="hljs-comment">// 例えば:</span></span><span>
</span><span><span class="hljs-comment">// 環境変数を初期化します,または、エンコード形状などを設定します。</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Type: text/html; charset=utf-8'</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>

<hr>

<h1>存在する PHP 使用 quoted_printable_decode デコード時,ラインブレークをただしく処理する方法,乱雑な形状は避けるけてください?</h1>

<p>存在する处理电子邮件内容或者一些使用 <code>quoted-printable

キャリッジリターンラインブレーク(CRLF)を示します。

2。QUOTED_PRINTABLE_DECODE ()関数動作原理

この関数は、文字列内の等記号を認識し、対応する文字に変換します。同時に、ラインの最後にソフトな新しいラインに遭遇した場合(つまり、ラインの端にある等号)、削除され、次のラインの内容がスプライスされます。

ただし、デコードされたNewline文字が予想された形式ではない場合があり、表示されたときに形式が混乱することがあります。

3。ラインブレイク形式の違い

  • CRLF(\ r \ n) :Windowsシステムのデフォルトのラインブレーク。
  • LF(\ n) :unix/linuxおよびmacos(新しいバージョン)デフォルトのラインブレーク。
  • Cr(\ r) :MacOSデフォルトラインブレークの古いバージョン。

PHPでは、ラインブレイクキャラクターはさまざまな環境で一貫して処理されているため、フォーマットの問題が容易になります。

4.よくある質問の例

<span><span>$ encoded</span></span> <span>=</span> <span><span>"hello = 0d = 0aworld = 0d = 0a!"</span></span> <span>;
</span><span><span>$ decoded</span></span> <span>=</span> <span><span class="function_ invoke__">quoted_printable_decode</span></span> <span>(</span> <span><span>$ encoded</span></span> <span>);
</span><span><span>エコー</span></span><span> </span><span><span class="function_ invoke__">nl2br</span></span> <span>(</span> <span><span>$ decoded</span></span> <span>);
</span><p>この時点で、 <span class="fun">$ decoded</span>の新しいしいライン文字がCRLFである場合、1つのブラウザや環境はただしく知るされず、1つのラインまたは混乱をトリックく可能性があります。</p><h2> 5。新しいしいライン文字をただしく処理する方法</h2><p>ラインブレークによって鉛き上昇こされる質問を回避けるするために、すべてのラインブレイクを統一された形状に均一に変変化できます。一般的にに、Unixスタイルのラインブレイク<span class="fun">\ n</span>に変変化することをお勧めします。サンプルコードは二流のとおりです。</p><pre>
<span><span>$ decoded</span></span> <span>=</span> <span><span class="function_ invoke__">quoted_printable_decode</span></span> <span>(</span> <span><span>$ encoded</span></span> <span>);

</span><span><span>//すべてのcrlf(\ r \ n)およびcr(\ r)newline文字をlf(\ n)にセットき変化えます</span></span><span>
</span><span><span>$ remarized</span></span> <span>=</span> <span><span class="function_ invoke__">str_replace</span></span> <span>([</span> <span><span>"\ r \ n"</span></span> <span>、</span> <span><span>"\ r"</span></span> <span>]、</span> <span><span>"\ n"</span></span> <span>、</span> <span><span>$ decoded</span></span> <span>);

</span><span><span>// newlinesを急行するためにHTMLが必要な場合は、NL2BRを使用できます</span></span><span>
</span><span><span>エコー</span></span><span> </span><span><span class="function_ invoke__">nl2br</span></span> <span>(</span> <span><span class="function_ invoke__">htmlspecialchars</span></span> <span>(</span> <span><span>$ remarized</span></span> <span>));
</span><h2>6。概要</h2><ul><li><span class="fun">QUOTED_PRINTABLE_DECODE()</span>でデコードした戻る、NewLine形状はCRLFまたはCRになる場合があります。</li><li>フォーマット障害を避けるけるために、ラインブレークをLF(\ n)にセットき変化えることをお勧めします。</li><li> HTMLを出力するとき、 <span class="fun"><a href="/ja/php/nl2br.html" target="_blank">NL2BR()</a></span>と<span class="fun"><a href="/ja/php/htmlspecialchars.html" target="_blank">HTMLSPECIALCHARS()</a></span>を使用すると、フォーマットとセキュリティを確認するできます。</li></ul><p>上記の方法により、 <span class="fun">Quoted_printable_decode()</span>を使用する場合のラインブレークによって鉛き上昇こされるフォーマットの質問を効果的に回避けるし、コンテンツの急行をより標準化されたクリアにします。</p></div></div>