2012-06-27 61 views
0

我忙於一個網站和一個元素,我用preg_replace用短劃線替換所有空格。Preg_replace多個模式

preg_replace('/\\s/', '-', $item_replace_en[0]) 

而且這個工程很好,但現在我有一個新問題。用戶輸入以下「音樂/電影」。 輸出是「音樂 -/- 電影」,我希望它是「音樂電影」。

我該如何做到這一點?

+2

您打算再次詢問用戶何時進入「音樂,電影」?如果沒有,請花點時間更準確地指定您想要的內容。 – Jon

回答

2

它看起來像你試圖生成一個可以用作URL的字符串。

當用戶添加要轉換爲URL安全字符串的標題時,可能會發生許多情況。有人可能例如使用:

Mess'd up --text-- just (to) stress /test/ ?our! `little` \\clean\\ 
url fun.ction!?-->"); 

應返回:

messd-UP-文本只是對壓力測試,我們-小清潔網址功能

你的代碼準備好了嗎?在這種情況下,您可以使用此功能:

setlocale(LC_ALL, 'en_US.UTF8'); 
function toAscii($str, $replace=array(), $delimiter='-') { 
    if(!empty($replace)) { 
     $str = str_replace((array)$replace, ' ', $str); 
    } 

    $clean = iconv('UTF-8', 'ASCII//TRANSLIT', $str); 
    $clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $clean); 
    $clean = strtolower(trim($clean, '-')); 
    $clean = preg_replace("/[\/_|+ -]+/", $delimiter, $clean); 

    return $clean; 
} 
1

您可以在模式和替換文本中使用數組。 例如

$pattern=array(); 
$pattern[0]="/\\s/"; 
$pattern[1]="/-\/-/"; 
$replace=array(); 
$replace[0]="-"; 
$replace[1]="-"; 
preg_replace($pattern, $replace, $item_replace_en[0]); 

您可以使用盡可能多的模式和替換你想要的。 欲瞭解更多信息,請參閱http://php.net/manual/en/function.preg-replace.php

0

試試這個:

$returnValue = preg_replace('/(\\s\\/)?(\\s)/', '-',$item_replace_en[0]); 

但這不會替換字符串像"Music/ Film""Music /Film"Music/Film