2012-07-04 104 views
55

如何將一個PHP變量從「My company & My Name」轉換爲「my-company-my-name」?去掉php變量,用破折號替換空格

我需要將它全部小寫,刪除所有特殊字符並用破折號替換空格。

+5

[你嘗試過什麼?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) – ManseUK

回答

195

此功能將創建一個搜索引擎友好的字符串

function seoUrl($string) { 
    //Lower case everything 
    $string = strtolower($string); 
    //Make alphanumeric (removes all other characters) 
    $string = preg_replace("/[^a-z0-9_\s-]/", "", $string); 
    //Clean up multiple dashes or whitespaces 
    $string = preg_replace("/[\s-]+/", " ", $string); 
    //Convert whitespaces and underscore to dash 
    $string = preg_replace("/[\s_]/", "-", $string); 
    return $string; 
} 

應該罰款:)

+3

+1完美的片斷: ) – Mahdi

+1

謝謝。這是一個很好的簡單功能,它可以擴展去除某些不適合使用的關鍵字,比如'the'&'和'。 – rorypicko

+0

當然,它確實工作正常,它值得延長! – Mahdi

8

更換特定的字符: http://se.php.net/manual/en/function.str-replace.php

例子:

function replaceAll($text) { 
    $text = strtolower(htmlentities($text)); 
    $text = str_replace(get_html_translation_table(), "-", $text); 
    $text = str_replace(" ", "-", $text); 
    $text = preg_replace("/[-]+/i", "-", $text); 
    return $text; 
} 
6

燁,和如果你想處理任何特殊的字符你需要在模式中聲明它們,否則它們可能會被刷新。你可以這樣做的:

strtolower(preg_replace('/-+/', '-', preg_replace('/[^\wáéíóú]/', '-', $string))); 
相關問題