2012-04-29 19 views
1

我新的PHP如何使用PHP

我想刪除一個字符串的最後一個逗號去除串最後一個逗號,我怎麼能做到這一點。 這裏是我的代碼:

<?php 
$sub ="economic,maths,science"; 
$cap = explode(",",$sub); 
foreach($cap as $new){ 
    echo ucfirst($new).","; 
    } 
?> 

任何幫助,將不勝感激,謝謝提前。

+0

thnx爲了您所有的努力,我欣賞它但我不能投票,因爲我沒有足夠的聲望。 – Sunny 2012-04-29 14:30:48

回答

-1
<?php 
$sub = "economic,maths,science"; 
$cap = explode(",",$sub); 
$count = count($cap); 
$i = 1;  
foreach($cap as $newSub){ 
    if($count>$i){ 
     echo ucfirst($newSub).","; 
    }else{ 
     echo ucfirst($newSub); 
    } 
    $i++; 
} 
?> 
1
<?php 
$sub ="economic,maths,science"; 
$cap = explode(",",$sub); 
$cap2 = array(); 
foreach($cap as $new){ 
    $cap2[] = ucfirst($new); 
} 
echo implode(",",$cap2) 
?> 
-1

你可以做到這一點沒有一個循環,像這樣:

$string = 'test, test, test'; 
$pos = strrpos($string, ','); 

$string[$pos] = ''; 

echo $string; 
-1

一個簡單的正則表達式會做:

preg_replace('/,([^,])$/','\1',$str); 
+0

去tom walters回答,迄今爲止最快。 – 2012-04-29 14:24:27

1
$sub ="economic,maths,science"; 
var_dump(implode(',', array_map('ucfirst', explode(",", $sub)))); 
0

這一個工程用字邊界,不只是逗號:

preg_replace('~\b(\w+)\b~e', 'ucfirst("\\1")', "economic,maths,science"); 
+0

帶e標誌的正則表達式非常慢,並且在應該使用「implode」處理的情況下使用正則表達式。 – sg3s 2012-05-05 01:07:26

+0

在e標誌性能上有任何鏈接,或者有任何理由偏好通用正則表達式的特定代碼段? – 2012-05-05 02:30:47

+0

我無法找到有關性能問題的文章,但它與在字符串上執行的添加/剝離操作有關。但即使如此[還有其他問題需要擔心](http://stackoverflow.com/questions/3115559/exploitable-php-functions)。但這不是主要問題,啓動正則表達式引擎,做一個相當匹配,這順便說一句,它不能確保逗號之間的所有內容都被使用(還有其他的限制),當將其應用於更長時間時,您會遇到其他問題,更復雜的字符串。 – sg3s 2012-05-05 10:22:31

2

簡單的裝飾就足夠了:

$string = trim($string, " ,");

注意修剪()函數的第二個參數允許您從您的字符串,而不僅僅是空白修剪定義的字符。因此,在我的用法中定義了兩個字符:空格字符「」和逗號「,」。

,如果你尋找資本的話沒有一個循環:

$string = ucwords(trim($string, " ,"));

注:爲ucwords()函數查找空白定義字邊界,「蘋果,蘋果」將無法正常工作,但「蘋果,蘋果」 會工作,所以:

$string = ucwords(str_replace(array(","," "),array(", "," "),trim($string, " ,")));

是最好的解決方案。 (在第一個替換陣列的第二個元素中有兩個空格。)