2017-03-05 181 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

谢谢您的答复。 :) –