【问题标题】:preg_replace_callback with PHP_EOL does not work on Linux带有 PHP_EOL 的 preg_replace_callback 在 Linux 上不起作用
【发布时间】:2021-01-29 14:46:50
【问题描述】:

我有一个 PHP 代码,其中包含流程用户输入表单 html 表单,应该从代码中删除 PHP_EOL 标志。如果我在本地 Win 10 机器上测试它,它运行良好。但由于它在生产 Linux 服务器上,它没有。代码如下:

$text = preg_replace_callback('/```([^`]+)```/', function($m) {
    return '<pre class="prettyprint custom"><code>' . trim($m[1], PHP_EOL) . '</code></pre>';
}, $text);

我不确定,但我认为原因是输入来自我的 Window 浏览器到 Linux。我说的对吗?

【问题讨论】:

    标签: php linux line-breaks


    【解决方案1】:

    您必须修剪两个结束行字符。 Linux \n 和 Windows \r\n。而不是使用 PHP_EOL 至极仅代表当前系统上的换行符,您可以使用

    trim($m[1],"\r\n")
    

    【讨论】:

    • 警告:trim() 最多需要 2 个参数,给定 3 个!第一个参数就足够了。
    • 啊……我的错……它已更新,谢谢。
    猜你喜欢
    • 2016-03-25
    • 2016-06-08
    • 2015-04-15
    • 1970-01-01
    • 1970-01-01
    • 2014-07-15
    • 2021-10-22
    • 2017-04-15
    • 2019-05-14
    相关资源
    最近更新 更多