2015-06-28 33 views
-1

我有這樣的字符串列表:傳遞一個字符串到一個數組PHP

'金字塔', 'htc_europe', 'htc_pyramid', '金字塔', '金字塔', 'HTC',「1.11 .401.110 CL68035 釋放密鑰, 'htc_europe /金字塔/金字塔:4.0.3/IML74K/68035.110:用戶/釋放密鑰'

它看起來像陣列, 的元件但是當我使用

<?php 
    $string = "'PYRAMID','htc_europe','htc_pyramid','pyramid','pyramid','HTC','1.11.401.110 CL68035 release-keys','htc_europe/pyramid/pyramid:4.0.3/IML74K/68035.110:user/release-keys'"; 
    $arr = array($string); 
    print_r($arr); 

?> 

它不工作,因爲我想:

陣列([0] => '金字塔', 'htc_europe', 'htc_pyramid', '金字塔', '金字塔', 'HTC',「1.11。 401.110 CL68035 釋放密鑰, 'htc_europe /金字塔/金字塔:4.0.3/IML74K/68035.110:用戶/釋放密鑰')

代替:

陣列([0 ] => PYRAMID,[1] => htc_europe,[2] => htc_pyramid, ...

我不想使用爆炸()因爲我的琴絃已經在陣列格式和許多字符串有「」字符。 請幫助我,謝謝。

+0

你有數組或字符串?它究竟應該如何? – Droid

+0

可能的重複http://stackoverflow.com/questions/1125730/how-can-i-split-a-comma-delimited-string-into-an-array-in-php – kulaeff

+0

由於您不想使用'explode()'的答案是:'evil()',但我不推薦它 – Rizier123

回答

0

$string仍然是一個string,所以你爆炸它,如果你想製作一個數組。

如果你的問題是strings have the ',' character,使用一些其他的分隔符,也許|

$string = "'PYRAMID'|'htc_europe'|'htc_pyramid'|'pyramid'|'pyramid'|'HTC'|'1.11.401.110 CL68035 release-keys'|'htc_europe/pyramid/pyramid:4.0.3/IML74K/68035.110:user/release-keys'"; 
    $arr = explode('|',$string); 
    print_r($arr); 
+1

「我不想使用explode(),因爲我的字符串已經是數組格式了,請幫助我,謝謝。做好閱讀他的問題。 –

+0

@Dan Belden他的字符串類型爲'string',而不是'array'類型。 OP的問題是不正確的。 – kulaeff

+0

無關緊要,這個問題明確地說沒有爆炸 - 他現在已經更新,以證明爲什麼也是。 「我的許多字符串包含一個,」。這個解決方案是無效的,並且在沒有閱讀問題的情況下很急。因此...表決。 –

-1
<?php 
$int = preg_match_all(
    "/'(.+?)'/", 
    "'PYRAMID','htc_europe','htc_pyramid','pyramid','pyramid','HTC','1.11.401.110 CL68035 release-keys','htc_europe/pyramid/pyramid:4.0.3/IML74K/68035.110:user/release-keys'", 
    $matches); 
print_r($matches[1]); 

你可以在這裏http://micmap.org/php-by-example/en/function/preg_match_all

+2

如果其中一個字符串包含引號,那麼不會中斷這個中斷嗎? –

5

您的字符串不是測試它在陣列格式。從它的外觀和根據您的意見的方式,我會說,你有逗號分隔值,CSV。因此,要分析,最好的辦法是使用該格式像str_getcsv()專門製作功能:

$str = "'PYRAMID','htc_europe','htc_pyramid','pyramid','pyramid','HTC','1.11.401.110 CL68035 release-keys','htc_europe/pyramid/pyramid:4.0.3/IML74K/68035.110:user/release-keys'"; 

// this will get you the result you are looking for 
$arr = str_getcsv($str, ',', "'"); 

var_dump($arr); 

使用第二和第三個參數可以確保它被解析正確也當一個字符串包含逗號。

-1

由於這個問題的編輯,我的回答是已經過時。因爲它包含了一些解釋,爲什麼在特定情況下爆炸將是一個有效的解決方案,我會離開這裏。

,你可以在PHP的手動在線閱讀,存在能夠創建一個數組時,可以使用非常精確的語法,這是參考:

http://php.net/manual/en/function.array.php

正如可以看到使用array()創建一個新數組的正確方法是聲明每個由逗號分隔的值,方法是聲明每對索引=>值用逗號分隔。

有沒有辦法將單個字符串傳遞給該方法(我可以看到它像JavaScript或Java中的json一樣,但這是Off Topic),因爲它不會解析它,方法將採用整個字符串一樣,當然也可以將它放入單個索引(在您的情況下索引爲零)。

我告訴你當然要使用explode()或split()或在之前解析你的字符串,而我之前告訴過你的是我聲明的原因。

您probabily想在數組中的字符串手機的每一個單一的模式,所以你必須刪除單引號第一:

$stringReplaced = str_replace("'", "", $yourString); 

然後你必須將字符串分割成一個數組使用:

$array = explode(',',$yourString); 

我希望你能借此在考慮

當然由我collegue如告訴在那裏,你可以把這個字符串作爲一個逗號分隔的VA lue並使用str_getcsv。

〜雖然你將需要刪除的單引號有純粹的字符串。〜 (最後一個說法是錯誤的,因爲你可以使用str_getcsv提供的外殼焦炭PARAM)

+1

這不會工作,因爲他的一些字符串包含逗號。 –

+0

你確定嗎?我看不到包含逗號的任何部分 – Gianmarco

+0

我相信他只發布了他的字符串的一個子集,我會冒險猜測字符串是更長的更多的單詞......並且他可能在更有彈性解。不錯,儘管嘗試,愛爆炸! :) –

相關問題