簡體   English   中英

php / regex 將多個段落轉換為一個帶有換行符的段落

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM