2011-02-12 61 views
3

我想清理一個字符串。preg_replace正則表達式問題

我只需要允許

  1. 大寫/低字母
  2. 數字
  3. 空格,製表符,回車
  4. 這些字符:_-+*()[]!#?.,;:'"<>

其他一切需要去再見。我如何去做這件事?我有這個,它適用於大寫/小寫字母,數字和空格。但我不知道如何解釋製表符,回車符或如何處理特殊字符?

$str = preg_replace('/[^a-z0-9 ]/i', '', $str); 
+0

永遠不要硬編碼`的RFC規範外,z`:它有一個代碼味道。所有字母都是`\ pL`,大寫字母是`\ p {Lu}`,小寫字母是`\ p {Ll}`。還有標題字母'\ p {Lt}`,修飾符字母'\ p {Lm}`和其他字母'\ p {Lo}`。請注意,還有非字母代碼點與派生的屬性`\ p {Alphabetic}`,`\ p {小寫}`和`\ p {大寫}`。 – tchrist 2011-02-12 12:26:13

+0

我不知道哪裏可以跟這個去。有任何例子嗎? – user614088 2011-02-12 14:07:58

回答

1

\ S - 空白字符(包括標籤和換行符)
\ r - 特殊symobls回車
使用 「\」 字符。

2

嘗試

$str = preg_replace('/[^\w\r\n\t+*()[\]!#?.\,;:\'"<> -]/', '', $str); 
1

$str = 'sample|';
$result = !(bool)strlen(preg_replace('/^[a-z0-9A-Z\r\s:_-+*()[]!#?.,;:\>\<]*/', '', $str))