我編寫了這段代碼來爲鏈接準備一個標題,但我認爲它有點笨重,想知道是否有更好的理解正則表達式的人可以減少下面的函數(合併相關的preg_replaces)。我需要它去掉所有當前的連字符,去掉多個空格,確保它除了替換空格之外都是字母數字,用一個連字符替換所有空格,並確保字符串不以連字符開頭:縮短此功能
function prepareURLTitle($title)
{
return preg_replace("/\A-/", "", str_replace(" ", "-", preg_replace("/[^a-zA-Z0-9\s]/", "", preg_replace('/\s\s+/', ' ', preg_replace('/\s?-/', '', $title)))));
}
輸入的一個例子,它的輸出:
輸入:
BRAND NEW - 手套,2組//多空間在這裏,但可以將blockquote不會讓我顯示它們
輸出:
BRAND-NEW-手套-2-包
這將導致'BRAND NEW - 手套, 2包'成爲'全新 - 手套 - 2包' – kevlar1818
@ kevlar1818我修好了(有點)。 – Neal
只能用連字符替換所有非字母數字字符。特別是像「foo:bar」這樣的例子會變成「foo - bar」,而這應該變成「foo-bar」。 – Wormbo