0

私はフォーラムを作成していて、現在bbCodeセクションに取り組んでいます。すべてのBBCodeは機能しますが、私は絵文字システムも実装しています。構文は次のようになります:[e] :) [/ e]

テスト目的でこの文字列を作成しました。

[b]hello world[/b] [i]i am having fun[/i] [e]:)[/e] how are you doing today?! <3[color=blue]:D[/color]

そして、それは私が望んでいないものを返しています。これが返されるものです:

:)[/e] how are you doing today?! <3[color=bl

これは私のコードです:

function bbCode($str) {
     if (strpos($str, '[e]')!==false && strpos($str, '[/e]')!==false) {
          $f = strpos($str, '[e]') + 3;
          $s = strpos($str, '[/e]');
          $emote = substr($str, $f, $s);
     }
     return $emote;
}

$fと$sは正しい位置45と47を返していますが、substrが文字列を正しく切断していないことに注意してください。これはなぜですか、どうすれば修正できますか?

4

2 に答える 2

2

"string substr ( string $string , int $start [, int $length ] )

start パラメータと lengthパラメータで指定された文字列の部分を返します。"

$emote = substr($str, $f, $s - $f);
于 2013-02-08T01:39:07.010 に答える
1

substr の 3 番目のパラメーターは、抽出する文字列の長さと想定されています。に変更しますsubstr($str, $f, $s - $f);

公式ドキュメントは次の場所にあります。

http://php.net/manual/en/function.substr.php

于 2013-02-08T01:42:48.613 に答える