2010-05-29 166 views
3

我正試圖在字符串末尾刪除尾隨的-(短劃線)。這裏是我的代碼:正則表達式 - 字符串末尾的修剪字符

 
<?php 

$str = 'SAVE $45! - Wed. Beach Co-ed 6s (Jul-Aug)'; 

echo ereg_replace('([^a-z0-9]+)','-',strtolower($str)); 

?> 

產生這樣的:

 
save-45-wed-beach-co-ed-6s-jul-aug- 

我怎麼能僅當它有刪除特定的尾隨字符,在這種情況下幾許?

在此先感謝。

+0

你可能想檢查:[PHP的http://stackoverflow.com/questions/2103797/url-friendly-username-in-php/2103815#2103815 – 2010-05-29 17:24:48

+0

可能重複刪除最後一個字符,如果它是一個週期](http://stackoverflow.com/questions/2053830/php-remove-last-character-if-its-a-period) – 2010-05-29 17:29:30

回答

10

使用rtrim

rtrim($str, "-") 

如果你堅持使用正則表達式,你可以做

preg_replace('/-$/', '', $str) 

$人物主題的結尾匹配。

0

你的正則表達式是錯誤的,因爲它用短劃線去除每個非字母數字字符。

這應該是

echo ereg_replace('-$','',strtolower($str)); 

$表示「字符串的結束」,第二個參數是替換。 (至少我這麼認爲,我不知道php ereg_replace函數)

1

另一種解決方案。

<?php 

$string = 'SAVE $45! - Wed. Beach Co-ed 6s (Jul-Aug)'; 
$search = array('/[^a-z0-9]+/', '/[^a-z0-9]$/'); 
$replace = array('-', ''); 
echo preg_replace($search, $replace, strtolower($string)); 

?> 

輸出。

save-45-wed-beach-co-ed-6s-jul-aug 
相關問題