2017-03-05 180 views
0

逗號PHP,我想改變這個字符串:PHP截斷字符串

",,,3,4,,,5,6,,7,8,"

到這一點:

"3,4,5,6,7,8"

我已經成功地剝離之初逗號和字符串的末尾,但這隻能完成我需要的50%:

<?php 
$hello = ",,,3,4,5,6,,7,8,"; 
echo rtrim(ltrim($hello,","),","); 

結果:

"3,4,,,5,6,,7,8"

任何解決方案?

回答

1

您可以使用TRIM(),並至REGx實現這一點,請對下面的代碼一看,它可以幫助你

$from = ",,,,,,3,4,,,5,6,,7,8,,,"; 
echo $from; 
echo "<pre>"; 
$to = preg_replace('/,+/', ',', trim($from,",")); 
echo $to; 
+0

我喜歡這個解決方案,因爲它只需調用2個函數即非數組函數:)謝謝! –

+0

歡迎您:) –

2

做這個小動作:

$hello = ",,,3,4,,,5,6,,7,8,"; 
$hello = implode(",",array_filter(explode(',',$hello))); 

如果字符串是更復雜(也就是說,它是一個CSV這可能潛在有田裹「」逃避逗號,你可以這樣做:

$hello = ",,,3,4,,,5,6,,\"I,have,commas\",,7,8,"; 
$fields = array_filter(str_getcsv($hello)); 
$hello = str_putcsv($fields); 

str_putcsvhttps://gist.github.com/johanmeiring/2894568定義爲

if (!function_exists('str_putcsv')) { 
    function str_putcsv($input, $delimiter = ',', $enclosure = '"') { 
     $fp = fopen('php://temp', 'r+b'); 
     fputcsv($fp, $input, $delimiter, $enclosure); 
     rewind($fp); 
     $data = rtrim(stream_get_contents($fp), "\n"); 
     fclose($fp); 
     return $data; 
    } 
} 
0

implode(",", array_filter(explode(",", ",,,3,4,,,5,6,,7,8,"))

這是一點點閱讀,但基本上explode在逗號上的字符串,請撥打array_filter上的結果,然後implode它回來。

+0

謝謝您的答覆。 :) –