以下の事前処理済みのHTMLの中から内容が無いと判断する<p>タグを削除したいと思っています。
・<p>タグ、<br>タグ以外は**strip_tags()**にて削除。
preg_replace()にて、以下の正規表現を考えてみたものの、想定の挙動になりませんでした。
一つの<p>タグないで完結したいのですが、他の<p>タグに跨って削除されてしまうものを解消できないでしょうか。
PHP
1preg_replace( "/<(p|p\s.*)>(\r|\n|\r\n|\s| |<br>|<br />)*</p>/mis", "", $html);
html
1<!-- 挙動が異常なケース --> 2A文章がいくつかあります<br> 3<p class="xxx"></p> 4B文章がいくつかあります<br> 5C文章がいくつかあります<br> 6<p></p> 7<p id="xxxx"><br></p> 8D文章がいくつかあります<br> 9 10<!-- 上記の実行結果 --> 11A文章がいくつかあります<br> 12D文章がいくつかあります<br> 13 14<!-- 求めていた結果 --> 15A文章がいくつかあります<br> 16 17B文章がいくつかあります<br> 18C文章がいくつかあります<br> 19 20 21D文章がいくつかあります<br> 22

回答2件
あなたの回答
tips
プレビュー