我决定使用wordpress core的autop函数自动将换行符从textareas转换为<p>
和<br>
,并在我的库文件夹中使用它
(顺便说一句,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
块代码可以工作但只有双换行符,我想保留我的{ {1}}Š
如果我只是将此函数的代码添加到与autop函数相同的文件中,则返回相同的错误,我不知道包含<br>
函数的正确方法,我该怎么办?
答案 0 :(得分:0)
我想我找到了答案。
我在_autop_newline_preservation_helper
公共函数中插入了autop
函数,现在它可以正常工作。
我真的不知道这是不是一个好主意,所以如果有人认为这可能导致问题,请打我。