Php substr工作不正常?

Php substr工作不正常?,php,Php,我正在创建一个论坛,目前正在处理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] 请注意,$f和$s返回了正确的位置45和47,但是substr没有正确地剪切字符串。这是为什么?我如何修复它?“

我正在创建一个论坛,目前正在处理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]
请注意,$f和$s返回了正确的位置45和47,但是substr没有正确地剪切字符串。这是为什么?我如何修复它?

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

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

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

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


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

官方文件可在此处找到:


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

官方文件可在此处找到:


所选字符串的长度与找到的结束索引有可疑的关系:对于第三个参数:DPHP有一个。您需要使用大括号打开函数,
{
。所选字符串的长度看起来与找到的结束索引有可疑的关系:对于第三个参数:DPHP有一个。您需要使用大括号打开函数,
{
。还是
1+$s-$f
?非常感谢,它奏效了!:)啊,你打败了我!+1的速度=)还是
1+$s-$f
?非常感谢,它奏效了!:)啊,你打败了我!+1的速度=)
:)[/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;
}
$emote = substr($str, $f, $s - $f);