使用'preg_replace_callback'时,从Textarea显示新行段落

时间:2014-10-28 00:15:27

标签: php css enter

好的,所以当从数据库中取出时,我的段落显示正常。 使用CSS我有线......

white-space: pre-line;

段落的新行显示效果很好。

但后来我添加了一些代码,使每个句子的第一个字母大写。 代码是......

$description = htmlentities(strip_tags($_POST['desc']), ENT_QUOTES);
$desc = preg_replace_callback('/([.!?])\s*(\w)/', function ($matches) {
    return strtoupper($matches[1] . ' ' . $matches[2]);
},  ucfirst(strtolower($description)));

因此,虽然它现在有效,但它不会为新段落呈现新行。换句话说,它忽略了上面的CSS行或其他东西。

任何想法??

1 个答案:

答案 0 :(得分:0)

它不会忽略CSS,再也没有新行了。

看到您正在匹配您想要的内容,但是您正在替换,而不是新行代码表达式的第一个([.!?])和第二个(\w)组。

将表达式更改为'/([.!?])(\*)(\ w)/'然后将返回语句更改为strtoupper($matches[1] . $matches[2] . $matches[3])

它应该有用。