2012-11-04 41 views
-3

我想寫一個函數,篩選從輸入到只有字母和符號「 - 」的所有內容。我想這象徵由於輸入包含姓名,有人可以被稱爲讓 - 保羅,這是我當前的代碼:過濾一切,但字母和「 - 」

if(!preg_match('/^\[a-zA-Z]+$/',$string)) { 
// Containing something other than a-z and A-Z 
} 

$string = 'Jean-Paul';現在給該字符串中包含非法字符,但我怎麼可以這樣做,它接受「-」?如果它是第一個或最後一個字符有

+1

沒有,在約2分鐘閱讀正則表達式不會解決 – Alexander

+0

對不起因爲沒有你那麼聰明,亞歷山大 – DannyCruzeira

+0

對不起,你認爲這是關於聰明與否 – Alexander

回答

1

如果「過濾器」你的意思是刪除不想要的字符,然後使用

$s = preg_replace("/[^a-z-]/i", "", $s); 

$s = preg_replace("/[^a-z-]/i", "", iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $s)); 
3
if (!preg_match('/^[A-Z-]+$/i', $string)) { 
// Contains something other than A-Z (case-insensitive) or - 
} 

一個-被視爲字符類中文字衝刺。

請注意,"Jean-Rémy"仍然會失敗。你確定你想限制自己的ASCII字母?

+0

除非你添加類似'$ string = iconv('UTF-8','ASCII // TRANSLIT // IGNORE',$ string);'以避免失敗。 – nickhar