preg_replace和linebreaks

时间:2011-11-21 14:25:37

标签: php preg-replace

我希望将大量文本转换为有效的HTML。这包括为每个新段落添加一个段落标记,我该如何使用PHP?例如,添加如下所示的换行符:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 

Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

转到

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>

<p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>

这可以通过preg_replace实现吗?

由于

4 个答案:

答案 0 :(得分:2)

我认为这就是你想要的:

  function nl2p($input) {
    return preg_replace('~^\s*(.*?)\s*$~sm', '<p>$1</p>', $input);
  }

答案 1 :(得分:1)

$result = "<p>" . str_replace("\r\n","</p><p>",$text) . "</p>";

demo

答案 2 :(得分:0)

也许这有助于http://php.net/manual/de/function.nl2br.php#78883

<?php
function nls2p($str)
 {
   return str_replace('<p></p>', '', '<p>' 
         . preg_replace('#([\r\n]\s*?[\r\n]){2,}#', '</p>$0<p>', $str) 
         . '</p>');
 }
?>

答案 3 :(得分:0)

这样您就不必担心不同类型的垂直换行符(\ n或\ r \ n或\ f或组合):

$output = '<p>' . preg_replace('/\v+/', '</p><p>', $input) . '</p>';

您可能还会发现此网站对测试很有帮助: http://www.gummydev.com/regex/