2011-11-09 32 views
7

我需要連接不確定數量的字符串,我想在兩個相鄰字符串之間的空格。像這樣a b c d e f最好的方法來連接PHP中的字符串與空格之間

另外我不希望任何前導或尾隨空格,在PHP中這樣做的最好方法是什麼?

+0

你如何存儲這些字符串?他們在陣列中嗎?或在單獨的變量? – kapa

+0

它們是單獨的變量,如果沒有設置vriable或空字符串,我不希望它包含在連接字符串中。 – freshest

+0

@freshest變量是如何生成的?你不能把值放入數組而不是自由變量嗎? – deviousdodo

回答

25

您的意思是$str = implode(' ', array('a', 'b', 'c', 'd', 'e', 'f'));

+0

非常感謝。 – freshest

1

考慮到你擁有所有這些字符串收集到一個數組,一個辦法做到這一點,可以海槽的foreach一句話:

$res = ""; 
foreach($strings as $str) { 
    $res.= $str." "; 
} 

if(strlen($res > 0)) 
    $res = substr($res,-1); 

這樣你可以有超過對未來變化的過程控制。

+3

當你有'implode()'時聽起來有點矯枉過正。 – kapa

+0

耶,我知道,但我通常喜歡讓事情打開並受控制,這讓我可以在面對未知數據類型時隨時進行更改,因爲現在它是一個字符串數組,但您永遠不知道在開發過程中會發生什麼,所以我喜歡有這樣的自由。就我所知,我總是有時間將它改爲簡單的內爆/連接。 – holographix

+1

您的解決方案(使用'foreach')假定字符串在一個數組中。 'implode'的使用也會假定這些字符串在一個數組中。我沒有看到這裏的自由,我只看到一堆不必要的行減少了可讀性。 – kapa

3
$strings = array(" asd " , NULL, "", " dasd ", "Dasd ", "", "", NULL); 

function isValid($v){ 
return empty($v) || !$v ? false : true; 
} 

$concatenated = trim(implode(" ", array_map("trim", array_filter($strings, "isValid")))); 

//"asd dasd Dasd" 
3
function concatenate() 
{ 
    $return = array(); 
    $numargs = func_num_args(); 
    $arg_list = func_get_args(); 
    for($i = 0; $i < $numargs; $i++) 
    { 
     if(empty($arg_list[$i])) continue; 
     $return[] = trim($arg_list[$i]); 
    } 
    return implode(' ', $return); 
} 

echo concatenate("Mark ", " as ", " correct"); 
2

簡單的方法是:

$string="hello" . " " . "world"; 
2

我只想補充到deviousdodo的回答,如果有這樣的情況,有數組中的空字符串,你不希望這些出現在連接字符串中,比如「a,b ,, d ,, f」,那麼最好使用以下代碼:

$ str = implode(',',array_filter(array('a', 'b','','d','','f')));

相關問題