2016-11-16 107 views
4

將字符串轉換爲slu best的最佳方式是什麼?含義:允許PHP將字符串轉換爲slu 012

  • α,轉換爲小寫
  • 允許數字
  • 空間應予以消除,而不是轉化爲破折號(「 - 」)
  • 重音字符替換爲等效標準的字母
  • 沒有其他字符允許,應該被剝離

我在網上發現了很多代碼,但它都傾向於將空格破折號,我不想這樣做。

我任選也很感興趣在不同的轉化,其中:

  • 號(「&」)應當由字符串替換‘和’

並且還一種變型,其中:

  • 不要打擾將重音字符轉換爲等效的標準字母
+1

http://cubiq.org/the-perfect-php-clean-url-generator – cmorrissey

+0

所以'youwantyoururltolooklikethis'清潔尋找'而不是你,want-你的URL到看樣this'?此外,重音字符被等同的標準字母替換,但不要轉換重音字符。哪一個? –

+2

選擇一個接近您想要的解決方案,然後修改它以添加您的特殊要求。 – Barmar

回答

8

這是我最初在這裏找到的一個修改函數(http://cubiq.org/the-perfect-php-clean-url-generator)。您可以通過''作爲分隔符不使用'-'

public static function createSlug($str, $delimiter = '-'){ 

    $slug = strtolower(trim(preg_replace('/[\s-]+/', $delimiter, preg_replace('/[^A-Za-z0-9-]+/', $delimiter, preg_replace('/[&]/', 'and', preg_replace('/[\']/', '', iconv('UTF-8', 'ASCII//TRANSLIT', $str))))), $delimiter)); 
    return $slug; 

} 
+0

這似乎是個不錯的選擇@cmorrissey。 –

0

上一個是很好的解決方案。但不幸的是,它切斷了特定的字母,如ć或ż。 如果您想保留它們,然後:

public static function createSlug($str, $delimiter = '-'){ 

    $unwanted_array = ['ś'=>'s', 'ą' => 'a', 'ć' => 'c', 'ę' => 'e', 'ł' => 'l', 'ń' => 'n', 'ó' => 'o', 'ź' => 'z', 'ż' => 'z', 
     'Ś'=>'s', 'Ą' => 'a', 'Ć' => 'c', 'Ę' => 'e', 'Ł' => 'l', 'Ń' => 'n', 'Ó' => 'o', 'Ź' => 'z', 'Ż' => 'z']; // Polish letters for example 
    $str = strtr($str, $unwanted_array); 

    $slug = strtolower(trim(preg_replace('/[\s-]+/', $delimiter, preg_replace('/[^A-Za-z0-9-]+/', $delimiter, preg_replace('/[&]/', 'and', preg_replace('/[\']/', '', iconv('UTF-8', 'ASCII//TRANSLIT', $str))))), $delimiter)); 
    return $slug; 
}