2014-10-20 94 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