我忙於一個網站和一個元素,我用preg_replace用短劃線替換所有空格。Preg_replace多個模式
preg_replace('/\\s/', '-', $item_replace_en[0])
而且這個工程很好,但現在我有一個新問題。用戶輸入以下「音樂/電影」。 輸出是「音樂 -/- 電影」,我希望它是「音樂電影」。
我該如何做到這一點?
我忙於一個網站和一個元素,我用preg_replace用短劃線替換所有空格。Preg_replace多個模式
preg_replace('/\\s/', '-', $item_replace_en[0])
而且這個工程很好,但現在我有一個新問題。用戶輸入以下「音樂/電影」。 輸出是「音樂 -/- 電影」,我希望它是「音樂電影」。
我該如何做到這一點?
它看起來像你試圖生成一個可以用作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;
}
您可以在模式和替換文本中使用數組。 例如
$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
試試這個:
$returnValue = preg_replace('/(\\s\\/)?(\\s)/', '-',$item_replace_en[0]);
但這不會替換字符串像"Music/ Film"
或"Music /Film"
或Music/Film
。
您打算再次詢問用戶何時進入「音樂,電影」?如果沒有,請花點時間更準確地指定您想要的內容。 – Jon