【问题标题】:PHP: add a linebreaks in a preg replacePHP:在 preg_replace 中添加换行符
【发布时间】:2014-04-07 08:33:12
【问题描述】:

大部分PHP代码我都可以看懂,但是一直没搞懂preg_replace是怎么用的,所以一直在抄别人的代码来得到我想要的。

现在我需要在其中添加换行符,我尝试了多种组合但我不知道如何使用它。

这是我当前的代码:

$textbr = nl2br($text);
$output = preg_replace_callback('/([.!?])\s*(\w)/', function ($matches) {
    return strtoupper($matches[1] . ' ' . $matches[2]);
}, ucfirst(strtolower($textbr)));

echo substr($output,0,870);
echo "...</p>";

那么如何在这部分代码中添加换行符呢?我需要它来输出换行符,然后将下一个字母变成大写字母。

【问题讨论】:

  • 你还没有描述你试图用你粘贴的代码做什么。您是否尝试为 linebrake 添加“\n”?
  • 我描述了我需要帮助的内容。 "我一直不明白 preg_replace 是如何使用的" "现在我需要在里面添加换行符,我尝试了多种组合但我不知道如何使用它。"

标签: php preg-replace-callback nl2br


【解决方案1】:

换行符是:\n 用于换行,\r 用于回车。

RegExp 很有趣,我建议您了解更多信息http://www.regular-expressions.info/ :)

【讨论】:

  • 那么我如何将它添加到 preg_replace 中?我尝试了一些组合,但我没有任何运气
  • 请发布预期结果,以便我更好地了解您需要完成什么。
  • 输入:“嗨,我的名字是 bla bla,我喜欢胡萝卜。这是一个橙色的文本。LINEBREAK LINEBREAK 这只是一条测试线”,它应该大写“hi”“this”x2。文本应该看起来像这样i.imgur.com/EckFtGB.png,但换行符后的第一个字母不大写。我需要它来做
【解决方案2】:

致任何想知道的人。我只是通过随机尝试自己的解决方案来解决它。

解决方案:

$textbr = nl2br($text);
$output = preg_replace_callback(
    '/([.!?\r?\n)])\s*(\w)/', 
    function ($matches) {
        return strtoupper($matches[1] . ' ' . $matches[2]);
    }, 
    ucfirst(
        strtolower($textbr)
    )
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-13
    • 2016-08-05
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多