2014-10-20 113 views
-4

我有一個字符串,從部分標誌「§」分隔的MSSQL數據庫中返回我需要在每個部分符號分裂但爆炸將無法在這種情況下工作。這可能與字符編碼有關嗎?爆炸不工作的部分符號「§」

$stringFromDB = "259354§261016§266618"; 
$stringArray = explode("§", $stringFromDB); 

這應該給我一份有3項然而,部分跡象並不在數據庫中的字符串(即使它們存在)匹配左右,爆炸不工作的數組。如果我echo()$ stringFromDB的內容,節符號就在那裏。我也嘗試用str_replace()替換節標誌,這也不起作用!這沒有道理!

+3

當您使用爆炸功能時,實際的分隔符被刪除。這是預期的行爲。 – Lix 2014-10-20 15:33:05

+0

-1 http://codepad.org/7pjFgzn9作品。 – iambriansreed 2014-10-20 15:34:30

+0

是的,我瞭解爆炸功能的工作原理。 – user1017477 2014-10-20 15:35:05

回答

0

的問題最終被PHP文件引起部分標誌不匹配的編碼。一旦我改變了文件的編碼類型,腳本現在可以正常工作。

0

explode()不能保留你正在「爆炸」。如果你想保留的符號,然後使用preg_split()代替:

$stringArray = preg_split("/§/", $stringFromDB, -1, PREG_SPLIT_DELIM_CAPTURE); 
               ^^^^^^^^^^^^^^^^^^^^^^^^ 
+0

我不想讓這些符號保留,我只是希望它們匹配!無論出於什麼原因,在這個服務器上,在這個腳本中,它將不起作用!這是我的問題。字符串可以被打印並且符號在那裏,但是,$ strArray = explode(「§」,「259354§261016§266618」);然後echo(count($ strArray));輸出1!這沒有任何意義! – user1017477 2014-10-20 15:39:13

+1

好吧,然後不同的字符集。你從數據庫中獲得的'§'可能與你輸入到你的代碼中的'§'不一樣。也許它已經被htmlentity編碼了,它在DB中的確是'¶'。如果你正在通過瀏覽器進行調試,那麼尤其如此 - 請記住,瀏覽器將** RENDER **它找到的任何html /實體,並且基本上會對你的文章中的內容產生興趣。 – 2014-10-20 15:44:49