2015-11-30 25 views

回答

6

的問題是,你正在使用preg_replace替換所有匹配的字符串中,而你需要僅在字符串的開始處刪除一系列非單詞字符。

使用錨和量詞:

$text = preg_replace('~^[^\w]+~', "", $text); 

或者使用\W,而不是​​(因爲它同樣的字符集相匹配),以縮短正則表達式位:

$text = preg_replace('~^\W+~', "", $text); 

IDEONE demo

說明:

  • ^ - 1個或多個字符(*)以外的單詞([a-zA-Z0-9_])字符 - 串
  • [^\w]+的開始。

爲了匹配數字以及非單詞字符只需要創建一個字符類[\W\d]

'~^[\W\d]+~' 

這裏是一個regex demo

字符類將匹配\W(一非單詞字符)或\d(數字),1次或更多次(由於+)。

+0

恩,我忘了提這個,但我也不希望它以數字開頭,我只記得\ w還包括數字。我應該用什麼來代替呢? – jessica

+0

使用'^ [\ W \ d] +'。查看我更新的[IDEONE演示](http://ideone.com/wmmf9h)。 –