2013-04-03 25 views
0

我有一個字符串,我想使用的字符將它們轉換成一個數組「§」:認識「§」用PHP

<?php 
$string="element1§element2§element3"; 
$array=explode("&sect;",$string); //tried also &#167; and §,double and single quotes 
print_r($array); 
?> 

輸出始終是這樣的:

Array ([0] =>element1§element2§element3) 

如何我可以讓PHP識別'§'符號以將字符串拆分爲數組嗎?

編輯: 我使用file()函數從文件中獲取字符串,並通過foreach迭代數組。如果我用我自己的例子,它的工作原理,但與exernal文件不。

的rowurlencode我的字符串的()是如下:

element1%A7element2%A7element3

+1

,但在3號線的符號編碼版本?堅持一種格式。 –

+1

我已經嘗試了你的代碼與§,並得到:'數組([0] => element1 [1] => element2 [2] => element3)';這裏是:<?php $ string =「element1§element2§element3」; $ array = explode(「§」,$ string); print_r($ array); ?> –

+0

已經試過了,「$ string」只是一個例子,我已經從另一個源文件中得到它的格式,但是轉義字符和文字字符都不能解決問題 –

回答

1

rawurlencode你的字符串看到實際這個字符的代碼。

然後使用此代碼爲什麼您使用的是文字字符在第2行分隔符

$array=explode("\xA7",$string); 
0

如果你從字面上使用:

<?php 
    $string="element1§element2§element3"; 
    $array=explode("§",$string); 
    print_r($array); 
?> 

這將工作。我的猜測是,在你的情況下,$string來自不同的來源,並且與你的PHP文件沒有相同的字符編碼。

2

完美的作品對我來說

ini_set('default.charset', 'UTF-8'); 
header('Content-type: text/html;charset=UTF8'); 

$string="element1§element2§element3"; 
$array=explode("§",$string); 

print_r($array); //Array ([0] => element1 [1] => element2 [2] => element3) 
+0

如果我設置ini_set()和標題()它不會再得到「§」但用「 」代替它 我使用file()函數從文件中獲取字符串,並通過foreach迭代數組。如果我用我自己的例子,它的工作原理,但與exernal文件不 –

+1

我有你的問題完全相同。所以,如果你想從外部文件加載數據,你需要確保文件是'沒有BOM'的UTF-8。例如,* Notepad ++ *就可以。問題是編碼.. – Yang

+0

謝謝你,我會盡力解決這個問題 –

0

我找到了答案,多虧了你的常識。 簡單地說,我改變這樣我的爆炸()函數:

$array=explode("%A7",rawurlencode($string)); 

其中 「%A7」 是 「§」 的rawurlencode。

+0

這是錯誤的方法。你會破壞你的絃樂 –