2013-02-08 57 views
0

我正在創建一個論壇,目前正在研究bbCode部分。 BBCode的所有工作,但我也實施了一個表情符號系統。語法如下:[E]:)[/ E]substr無法正常工作?

我做了這個字符串用於測試目的:

[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

所選字符串的長度看上去非常相關,以發現了結束索引:[RTFM](http://php.net/手冊/ en/function.substr.php)爲第三個參數:D – 2013-02-08 01:37:57

+1

PHP有一個[BBCode擴展](http://php.net/manual/en/book.bbcode.php)。你需要用一個大括號'{'來打開這個函數。 –

回答

2

「的字符串SUBSTR(字符串$字符串,整數$啓動[摘要$長度])

返回由開始和長度參數中指定的字符串的部分」。

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

還是'1 + $ s - $ f'? – Popnoodles

+0

非常感謝,它的工作! :) – Seth

+0

唉,你打我! +1因爲快速=) – jhansen