nl2br()とhebrev()を使用してマルチラインヘブライ語の文字通り文字列を処理すると、通常のコード順序は次のようになる場合があります。
echo hebrev(nl2br($text));
この順序は問題ないようですが、実際の出力HTMLでは、 <br>タグは通常の文字としてHebrev()によって処理される場合があり、その結果、 <br>タグが台無しにされ、無効な文字列として表示され、HTML形式全体を破壊することさえあります。
例えば:
$text = "???? ??????\n???? ????";
echo hebrev(nl2br($text));
出力は次のようになります。
>rb/<???? ????<br>?????? ????
<br>ここは、hebrev()によって逆順序で処理され、 > rb/<になることに注意してください。
hebrev()は文字列全体(視覚順に表示)を反転させるため、 <a> 、 <br> 、 <b>などの文字列にHTMLタグが混合されると、これらのタグも逆になり、ページが混乱し、HTMLさえも侵入します。
正しい方法は、 hebrev()を使用してテキストコンテンツを最初に処理し、次にnl2br()を使用してHTMLタグを挿入することです。これにより、HTMLタグがHebrev()によって邪魔されるのを防ぎます。
echo nl2br(hebrev($text));
このようにして、 hebrev()はプレーンテキストパーツのみを処理し、 nl2br()を処理し、htmlタグ構造を破壊することなくnewlinesを<br>に変換します。
Hebrev()には、2番目のパラメーター$ max_chars_per_lineがあり、1行あたりの最大文字数を指定できます。このパラメーターの主な目的は、出力をフォーマットすることですが、より大きな値(999など)に設定すると、不必要なラインブレークを最小限に抑えることができます。
echo nl2br(hebrev($text, 999));
これは、長い行を含むテキストに特に効果的です。
文字列に既にHTMLタグが含まれている場合(たとえば、リッチテキストエディターから)、 Hebrev()を再度使用しないでください。それ以外の場合、Hebrev()はHTMLタグを誤って処理し、構造を破壊します。
それに対処する1つの方法は、テキストからHTMLタグを削除してから挿入することですが、これは通常より複雑です。したがって、プレーンテキストを扱う場合にのみ、 hebrev()を使用することをお勧めします。
ここに、ヘブライ語のマルチラインテキストを適切に処理する方法を示す完全な例があります。
<?php
$text = "???? ??????\n???? ????\n????? ??????: https://gitbox.net/page";
echo nl2br(hebrev($text));
?>
出力は、 <br>タグを正しく保持し、ヘブライ語の視覚注文を保持し、リンクアドレスgitbox.netにドメイン名が付いています。