2013-08-01 37 views
0

我有一個字符串爆炸字符串,並輸出確切2元

$input = 'Hello | world'; 

,我想它爆炸到Helloworld,所以

$output = explode(' | ', $input); 

,如果我有

$input = 'Hello | world | third'; 

它返回3個元素,所以我必須切片這個數組:

$output = array_slice(explode(' | ', $input), 0, 2); 

如果

$input = 'Hello'; 

然後我要補充空元素有兩個輸出,所以:

$output = array_slice(array_merge(explode(' | ', $input), array(null)), 0, 2); 

是否有可能使這一個班輪簡單?

+0

我會保持你已經有的 –

+5

'explode'有第三個參數。也許它有幫助? –

+0

不,不會因爲用'你好|世界|第三個字符串和第三個參數設置爲「2」,它將返回「Hello」和「world |」 third'。對於字符串「Hello」,它仍然返回數組中的一個元素。 – hsz

回答

2
$output = array_slice(explode(" | ", "$input | "), 0, 2); 
+1

[如果限制設置和積極的,返回數組將包含一個最高限額的元素包含字符串的其餘部分的最後一個元素。(http://php.net/manual/en/function.explode.php) –

+0

你說得對!無論如何,你猜是否需要'array_slice'。仍然較短雖然;) –

+1

您的代碼產量'$輸出[1] = '世界|'''爲$輸入=「你好| world''。 – haim770

2

如何使用list

$first = null; 
$second = null; 

list($first, $second) = explode('|', $string); 

編輯

爲了防止你可以使用array_merge通知:

list($first, $second) = array_merge(explode('|', $string), array(null)); 

OR

list($first, $second) = explode('|', "{$string}|")); 
+0

您還可以添加第三個參數爆炸,這意味着限制:)(將其設置爲3) – Mantas

+2

這將提高'NOTICE'的情況下'$輸入=「Hello'' – haim770

-1

您可以使用列表(),並加入 段的最大數量的組合通過這個爆炸()函數,如接收:

<?php 

$in = array(
    "Hello", 
    "Hello | world", 
    "Hello | My | Lovely | World" 
    ); 

foreach($in as $test){ 
    list($one,$two) = explode(" | ", $test, 2); 
    print_r(array($one, $two)); 
} 

如果你離開了第三來自爆炸函數的參數 只會得到前兩個分段,即使有更多 - 然後會類似於您的array_slice部分。

+2

你試過了嗎? – Mantas

+0

肯定的事(http://3v4l.org/NKqWX) - 這不是爲你工作呢? – zefixlluja

+0

它也不適用於您的示例。'陣列 ( [0] =>你好 [1] =>我|可愛|世界 )'是不期望的輸出 – Mantas