我正在创建一个论坛,目前正在开发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没有正确剪切我的字符串。为什么这样,我该如何解决?
答案 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);
官方文件可在此处找到: