PHPでHTMLタグ間の改行を除去する方法を教えて下さい


PHPで簡単なブログシステムを作っています。  
HTMLを許可するフォームで以下のようなデータを入力した場合に、PHPで次のようにデータを変換して保存したいです(保存先はファイルかデータベースを想定しています)

要するに、普通に書いたテキストの改行は `<br>` に変換し、改行が意味を持たない箇所(`<ul>` と `<li>` の間)は詰めておきたいです。

**入力データ:**

[code]

    あいうえお
    
    あいうえお
    
    <ul>
      <li>かきくけこ</li>
      <li>さしすせそ</li>
    </ul>
    
[/code]

**変換後のデータ:**

[code]

    あいうえお<br><br>あいうえお<br><br><ul><li>かきくけこ</li><li>さしすせそ</li><br></ul>
    
[/code]




改行を`<br>`に変換するにPHPの標準関数である[nl2br](https://www.php.net/manual/ja/function.nl2br.php)を利用しましょう  
また改行の除去に関しては文字の置換で対応できます。[str_replace](https://www.php.net/manual/ja/function.str-
replace.php)を利用しましょう

[code]

    $val = "変換したい文字\nここで改行";
    $val = nl2br($val);
    $val = str_replace(array("\r\n", "\r", "\n"), "", $val);
    
[/code]

どの改行コードが渡ってくるのかわからないので三パターンで置換しています。

ちなみに改行が意味のあるHTML構文だと改行を除去してしまうと入力した通りに出力されない可能性があります。  
たとえば`<pre></pre>`なんかだと余分にbrを追加してしまったり、改行がなくなったりしてしまいます。  
練習かとは思いますが、基本的にはhtmlタグを生かすテキストであれば変換せずに入力者に`<br>`を入力してもらうようにしましょう。




改行を`<br>`に変換するにPHPの標準関数である[nl2br](https://www.php.net/manual/ja/function.nl2br.php)を利用しましょう  
また改行の除去に関しては文字の置換で対応できます。[str_replace](https://www.php.net/manual/ja/function.str-
replace.php)を利用しましょう

[code]

    $val = "変換したい文字\nここで改行";
    $val = nl2br($val);
    $val = str_replace(array("\r\n", "\r", "\n"), "", $val);
    
[/code]

どの改行コードが渡ってくるのかわからないので三パターンで置換しています。

ちなみに改行が意味のあるHTML構文だと改行を除去してしまうと入力した通りに出力されない可能性があります。  
たとえば`<pre></pre>`なんかだと余分にbrを追加してしまったり、改行がなくなったりしてしまいます。  
練習かとは思いますが、基本的にはhtmlタグを生かすテキストであれば変換せずに入力者に`<br>`を入力してもらうようにしましょう。

