2011-03-30 84 views
2

我試圖去除所有特殊字符並在所有單詞之間添加破折號。刪除特殊字符並在單詞之間添加一個破折號php mysql

例子:

示例文本: 如何使東西,別的東西,和其他的東西。

例字符串:它應該如何看

$string = "How to make something, something else, and other stuff."; 

示例: 如何對做某事某事,別的,和其他-東西

我需要一個函數,將剝離所有特殊字符,而且在每個單詞之間加上破折號「但是在最後一個單詞之後不加破折號」。任何人有任何想法,我應該如何做到這一點?我認爲這很簡單。可能是一個preg_replace與正則表達式,這將解決特殊的字符問題,但添加破折號是我困惑的地方,我不知道該怎麼辦。

+0

你如何定義「特殊字符」?非字母數字字符?或者除了a-z之外的任何東西 – deceze 2011-03-30 00:11:29

回答

5

假設字符串是UTF-8:

$string = 'Höw to máke sòmething, something else, and other stuff'; 
$string = preg_replace('/[^a-z0-9]+/i','-', 
    iconv('UTF-8','ASCII//TRANSLIT',$string)); 
$string = trim($string,'-'); 
+0

問題在於它在最後一個單詞之後添加了一個破折號。其他方面,這將很好。 – chris 2011-03-30 00:14:24

+0

嗯,好吧,如果你不想那樣的話,我會編輯它......這只是最後的'''被'-'取代:) – Wrikken 2011-03-30 00:15:09

+0

酷似乎很好。我會在6分鐘內接受你的答案。謝謝。 – chris 2011-03-30 00:16:56

2

後,已刪除了非字母字符,可以explode()的空間,然後用破折號implode()

+0

這是一個好主意,但Wrikken的回答更多的是我一直在尋找的東西。感謝您的建議,非常感謝。 – chris 2011-03-30 00:17:58

1

我會爆炸的字符串的空間,然後用這樣的破折號爆吧:

$string = trim($string); // removes white space from ends 
$string = preg_replace("/[^A-Za-z0-9]/","",$string); // removes special chars 
$string = explode(' ', $string); // separates the words where there are spaces 
$string = implode('-', $string); // puts the words back into a sentence separated by dashes 
echo $string; 

這可以明顯地凝聚 - 但爲了簡單起見,這些是所需的步驟。

相關問題