2

我决定使用 wordpress core 中的 autop 函数自动将换行符从 textareas 转换为<p>s 和<br>s,并在我的库文件夹中使用它

(顺便说一句,Laravel 没有任何本地方式这样做,对吗?如果有的话,我会觉得很愚蠢)


所以在myproject/application/libraries/formatting.php我有以下内容:

class Formatting {

    public function autop($pee, $br = true) {
       [wpautop's code here]
    }
}

并将其称为

Formatting::autop($text);

所以它返回这个错误

preg_replace_callback(): Requires argument 2, '_autop_newline_preservation_helper', to be a valid callback

它与以下块有关

if ( $br ) {
    $pee = preg_replace_callback('/<(script|style).*?<\/\\1>/s', '_autop_newline_preservation_helper', $pee);
    $pee = preg_replace('|(?<!<br />)\s*\n|', "<br />\n", $pee); // optionally make line breaks
    $pee = str_replace('<WPPreserveNewline />', "\n", $pee);
}

需要此功能为他服务

function _autop_newline_preservation_helper( $matches ) {
     return str_replace("\n", "<WPPreserveNewline />", $matches[0]);
}

该函数显然负责将单换行符转换为<br>标签,如果我删除该if代码块,则代码可以工作,但只能使用双换行符,我想保留我<br>的 s

如果我只是将此函数的代码添加到与 autop 函数相同的文件中,它会返回相同的错误,我不知道包含该_autop_newline_preservation_helper函数的正确方法,我该怎么办?

4

1 回答 1

0

我想我自己找到了答案。

我在公共函数中插入了_autop_newline_preservation_helper函数autop,现在它可以工作了。

我真的不知道这是否是一个好主意,所以如果有人认为这可能会导致问题,请联系我。

于 2013-06-07T00:34:07.970 回答