2012-06-04 162 views
0

我試圖弄清楚這是什麼,以及如何改變它。如何轉換此正則表達式

preg_replace('/[^\w\s]/','',$var); 

我認爲這會用nothing代替所有符號(基本上刪除它們)。如果我想允許某些特定的符號,我該怎麼改變?

例如,我要取代一切,除了:

  • /
  • 數字
  • 字母
  • 空間

感謝。

+0

我不知道PHP,但通常'[]'定義符號類,和'^ '否定,只需在''''之前加上符號。 – mlt

+0

'^'是否否定'[]'中的所有內容? – Shackrock

+0

正如另一位成員所提到的,它在**之後否定了東西**而不是所有東西。 – mlt

回答

2

^意味着除此之外的所有內容,所以這將取代除了單詞字符(\w)和空格(\s)之外的所有內容。

要更換,除了你提到的人物的一切,用這個:

preg_replace('/[^\w\s\/]/', '', $var); 

\//的轉義版本。

+0

'\ d'做了什麼?我可以確認原帖中的正則表達式不會替換數字... – Shackrock

+0

'\ d'表示數字/數字,'\ w'表示字母(a-z和A-Z)。 – Jeroen

+0

\ w也應該包含數字: – Tremmors

1

,基本上是: 「發現的一切,這不是一個單詞字符或空格字符和字符串中刪除它」

^是否定,所以你可以以後在把任何你想要的[]它會跳過這些。從perl.org

\ w是速記[0-9A-ZA-Z_](或接近)。

:它已經做你想做除/

說明一切

\ w是單詞字符(字母數字或)和表示 [0-9A-ZA-Z]

相關問題