[英]php / regex convert multiple paragraphs to one paragraph with line breaks
我想轉換這樣的字符串
<p>one</p>
<p>two</p>
<p>three</p>
對此
<p>one<br>two<br>three</p>
(如果只有一個段落標簽,則保持不變)
所以我知道的正則表達式將基本上只需要替換每個</p><p>
對有<br>
,我可能只是str_replace()函數</p><p>
有<br>
,但會有可能換行符或關閉和打開 p 標簽之間的空格。
所以使用正則表達式,就像這樣。 但這會去掉“兩個”(因為它位於結尾和開頭 p 標記之間)。 它似乎也打破了新的行?
<?php
$string = '<p>one</p><p>two</p><p>three</p>';
$string2 = '<p>one</p>
<p>two</p>
<p>three</p>';
$pattern = '~</p>.*<p>~';
$replacement = '<br>';
echo preg_replace($pattern, $replacement, $string);
echo preg_replace($pattern, $replacement, $string2);
// Outputs "<p>one<br>three</p><p>one</p>" and "<p>one</p>
// <p>two</p>
// <p>three</p>"
有誰知道如何修復該正則表達式或知道更好的方法?
(我正在使用 Wordpress 以防有一些輔助功能)
干杯! :)
用
<?php
$string = '<p>one</p><p>two</p><p>three</p>';
$string2 = '<p>one</p>
<p>two</p>
<p>three</p>';
$pattern = '~</p>\s*<p>~u';
$replacement = '<br>';
echo preg_replace($pattern, $replacement, $string) . PHP_EOL. preg_replace($pattern, $replacement, $string2);
見證明。
結果:
<p>one<br>two<br>three</p>
<p>one<br>two<br>three</p>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.