PHP関数:
function b($text) {
$body="<b>$text</b>";
return $body;
}
Preg_Replace:
function replaceTags($body) {
$body = preg_replace('!\[b](.*?)\[\/b\]!Uei', "''.b('$1','$2').''", $body, -1);
return $body;
}
コードは機能します...ある程度。どうやら毎回最初のインスタンスにのみ制限されているようです。コードをコピーしているときに誤ってこれを壊し、互いに挿入すると、内側のタグが太字で表示されました。
例:
*Code:* [b]This is Hi.[/b] Hello world. [b]This is Hi2.[/b]
*Output:* **This is Hi.[/b] Hello world. [b]This is Hi2.**
preg_replaceを使用するのは初めてです。パターンが少しずれているか、何かが欠けている可能性があると思います。これが、最初のインスタンスのみを表示する理由です。MySQLクエリでもこれを試しましたが、これも1行に制限されています。
ユーザー側に単純なマークアップを利用しようとしていますが、必要に応じてMySQLクエリをカスタムタグとして使用したいと思います(これも機能しますが、最初のレコードのみを表示します)。
ありがとう。どんな助けやアドバイスも大歓迎です。