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

“字符串 substr ( 字符串 $string , int $start [, int $length ] )

返回由 start和 length参数指定的字符串部分。"

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

substr 的第三个参数应该是您要提取的字符串的长度。将其更改为substr($str, $f, $s - $f);

官方文档可以在这里找到:

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

于 2013-02-08T01:42:48.613 回答