substr无法正常工作?

时间:2013-02-08 01:36:08

标签: 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]

它正在返回一些不是我想要的东西。以下是它的回归:

:)[/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没有正确剪切我的字符串。为什么这样,我该如何解决?

2 个答案:

答案 0 :(得分:2)

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

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

$emote = substr($str, $f, $s - $f);

答案 1 :(得分:1)

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

官方文件可在此处找到:

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