3

たとえば、一部の文字が予約されているテキストエリアのユーザー入力を扱っています。

[ 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 タグの両方を追加し、改行を
1 回の置換で置き換えます。

于 2012-06-27T16:48:37.777 に答える