0

私の文字列は次のとおりです。

$str = "[php] 

complete
once
A lot of text and other staffs!
but

[/php]";

$str = preg_replace("/\[php\]\s*(.*?)\s*\[\/php]/is","<pre>\\1</pre>",$str);

echo $str;

オンアウト:

<pre>complete
once
A lot of text and other staffs!
but</pre>

サンドボックステストでは機能しますが、私のサイトでは、テキストの最後にスペース (改行) があります。

U なしの test1

興味深いことに、「U」修飾子を使用すると、スペース (改行) がテキストの上部に表示されます。

U を使用した test2

$str = preg_replace("/\[php\]\s*(.*?)\s*\[\/php]/Uis","<pre>\\1</pre>",$str);

テキストエリアの画面:

テキストエリアで

この (例) の非常に基本的なページを更新します。[php] bbcode をフォームのテキストエリアに配置して送信するだけです。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<style>
.code {
    border: 1px solid #c2c2c2;
    padding: 4px;
    border-radius: 4px;
}
</style>
</head>
<body>
<?php 
$str = $_POST['textarea'];
$content = preg_replace("/\[php\]\s*(.*)\s*\[\/php\]/si","<pre class='code'>\\1</pre>",$str);
echo $content;
?>
<form method="post" action="" class="contactform">
<textarea name="textarea"></textarea>
<input type="submit" class="met_button pull-right" name="submit" value="Send">
</form>
</body>
</html>

下部または上部にスペースが表示されます。

4

1 に答える 1