2013-07-17 134 views
-3

我有一個字符串的例子:「超80國際----訪問者想要回報」PHP字符串刪除多 - 重寫url

如何刪除多「 - - 」到‘ - ’寫入網址 對不起我的英語很糟糕

+0

因此,您需要一個在.htaccess中使用的重寫規則?對不起,我被php-tag弄糊塗了。 –

+0

你需要一個php解決方案或一個htaccess的例子嗎? – Michael

+0

不清楚PHP解決方案是否需要或.htaccess之一。已經給出了兩個答案,但你更好地澄清。 – anubhava

回答

0

試試這個:

$new = 'over-80---of-international----visitors-want-to-return'; 

do { 
    $old = $new; 
    $new = str_replace('--', '-', $old); 
} while($old != $new); 

這個循環的變化 - 到 - 直到有沒什麼可做。

+0

他需要使用.htaccess文件重寫規則 – 2013-07-17 07:01:32

+0

Woops,我忽略了這一點。抱歉。但問題可能會更清楚一些,因爲現在每個人都在用php解決方案彈出。爲什麼這個問題無論如何都有一個php-tag? –

+0

感謝你的每一個。它非常希望 – user2547441

5
$string = 'over-80---of-international----visitors-want-to-return'; 
$string = preg_replace('#-{2,}#', '-', $string); 
+0

非常感謝你 – user2547441

+0

該解決方案不起作用,它只會刪除每個多短劃線組中的一個破折號。你會留下很多破折號! –

+2

這是不正確的,這有效。試試看。 RegEx在默認情況下是貪婪的,只有min是2,所以它會做它應該做的。 – Michael

1

的preg_replace應該工作:

$s = preg_replace('/-{2,}/', '-', "over-80---of-international----visitors-want-to-return"); 

但是如果確實是OP在.htaccess中尋找mod_rewrite的規則,那麼這將工作:

RewriteRule ^(.*?)(-)-+(.*)$ /$1$2$3 [L] 
-1

您需要使用str-replace

$string = "over-80---of-international----visitors-want-to-return"; 
$replaced = str_replace("--", "-", $string); 
+0

需要htaccess文件代碼 –

+0

這個問題沒有提到有關htaccess文件的任何內容。 – ikromm

+1

此外,您的解決方案不會刪除每一個多餘的短跑! –