2014-10-30 105 views
0

如何更換<p>hello</p> <p>world</p>hello<br />world <br />PHP替換段落換行

我試圖尋找在堆棧上,但沒有匹配的結果。

+1

無符合資料?只是谷歌取代字符串的PHP。沒有任何嘗試? – Ghost 2014-10-30 09:13:47

+0

@Ghost **不要**使用正則表達式和字符串替換來處理HTML – 2014-10-30 09:14:59

+2

@AleksG罰款。然後使用HTML解析器 – Ghost 2014-10-30 09:16:18

回答

3

你可以通過使用str_replace()函數來實現。

例如:

$string = "<p>hello</p> <p>world</p>"; 
$string = str_replace('<p>', '', $string); 
$string = str_replace('</p>', '<br />' , $string); 
+0

將不起作用,也刪除第一個也是最後一個

。打破貓頭鷹paragraphe – 2014-10-30 09:21:17

+0

這一個應該工作。 – 2014-12-21 08:56:51

0

使用該功能防止打破第一個和最後<p></p>

$string = str_replace($string, '</p><p>', ''); 

但是,如果一個空間來標記之間,它不會工作。

0
<?php 
$str = '<p>hello</p> <p>world</p>'; 
$replaceArr = array('<p>', '</p>', '</p> <p>'); 
$replacementArr = array('', '', '<br />'); 
$str = str_replace($replaceArr, $replacementArr, $str); 
echo $str; 
?> 

試試上面的代碼。

3

我試試這個自己,並得到我所期待的

$pattern = '/<p>(\w+)\<\/p>/'; 
$subject = '<p>hello</p><p>world</p>'; 
$replacement = '${1}<br/>'; 
$out = preg_replace($pattern, $replacement, $subject); 

我只是想知道這是更好的正則表達式或str_replace函數

我寫了一個更好的解決方案,希望大家能看到它的幫助,也許提高它

$pattern = '/<p(.*?)>((.*?)+)\<\/p>/'; 
$replacement = '${2}<br/>'; 
$subject = 'html string'; 
$out = preg_replace($pattern, $replacement, $subject);