3

我正在处理一个 textarea 用户输入,其中一些字符被保留,例如:

[ means <h1>
] means </h1>
{ means <p>
} means </p>

用户输入示例:

[Hello World title]
{hello worlds paragraph
and paragraph continues after line break}

示例系统显示:

<h1>Hello World title<h1>
<p>hello worlds paragraph<br/>
and paragraph continues after line break</p>

所有 HTML 标签都从用户输入中过滤掉,PHP 脚本将这些字符替换为前端。

我想使用 PHP 函数“nl2br”用 <br/> 替换换行符。

{问题只是和字符之间的换行符}应该替换为<br />.

我还需要考虑用户是否使用{}.

4

1 回答 1

3

我会同时做两个替换,使用preg_replace_callback

<?php

$input="{user input
user input}

newlines that aren't replaced";

function format_paragraph($m){
    return '<p>'.nl2br($m[1]).'</p>';
}

echo preg_replace_callback("/\{(.*)\}/s",format_paragraph,$input);

?>

在这里测试代码

此示例将同时添加 p 标记并用
一次替换替换换行符。

于 2012-06-27T16:48:37.777 回答