0

複数回出現する<br />, <br>, <br/>, \r,を 1 だけに置き換える必要がありますが、それが一緒に表示される場所だけを置き換えて\n、段落を配列に分割し、文字列の末尾にあるタグの最後の改行を削除できるようにする必要があります...\r\n<br />br

文字列の例は次のようになります。

This is paragraph 1<br>

This is paragraph 2<br /><br>



This is paragraph 3
This is paragraph 4


This is paragraph 5<br/>
This is paragraph 6


This is paragraph 7<br />This is paragraph 8

This is paragraph 9<br>

私が試したこと:

$description = !empty($results['Description']) ? strip_tags(rtrim(str_replace(array("\n", "\r", "\r\n", "<br>", "<br/>", "<br />"), array("<br />"), $results['Description']), '<br />'), '<br><a>') : '';

$paragraphs = array_filter(explode("<br />", $description));

ただし、これによりすべての改行が削除されます。文字列内の改行を維持する必要がありますが、改行を 1 つだけ行い、他のすべてを削除したいと考えています。これを行う方法?

<br>注: 文字列内のタグと<a>タグのみを許可したいので、strip_tags を使用してい$descriptionます。

4

1 に答える 1

2

最初に行末 ( ) で爆発させ、 、、、およびPHP_EOL以外のすべてを取り除いてみてください。<a>array_filter()implode()trim()

$str    =   'This is paragraph 1<br>

This is paragraph 2<br /><br>



This is paragraph 3
This is paragraph 4


This is paragraph 5<br/>
This is paragraph 6


This is paragraph 7<br />';

$str    =   trim(implode('<br />'.PHP_EOL,array_filter(explode(PHP_EOL,strip_tags($str,'<a>')))));

echo $str;

あなたにあげる:

This is paragraph 1<br />
This is paragraph 2<br />
This is paragraph 3<br />
This is paragraph 4<br />
This is paragraph 5<br />
This is paragraph 6<br />
This is paragraph 7

2 番目のシナリオ:

$str    =   'This is paragraph 1<br>

This is paragraph 2<br /><br>



This is paragraph 3
This is paragraph 4


This is paragraph 5<br/>This is paragraph 5
This is paragraph 6


This is paragraph 7<br />';

# Explode on line breaks and remove empty lines
$exp    =   array_filter(explode(PHP_EOL,$str));
# Loop array and filter the lines
$new    =   array_map(function($v) {
                return strip_tags(trim($v,'<br>,<br />,<br/>'),'<a><br>');
            },$exp);
# Implode the array back
echo implode('<br />'.PHP_EOL,$new);

あなたにあげる:

This is paragraph 1<br />
This is paragraph 2<br />
This is paragraph 3<br />
This is paragraph 4<br />
This is paragraph 5<br/>This is paragraph 5<br />
This is paragraph 6<br />
This is paragraph 7
于 2016-09-14T04:29:53.323 に答える