2013-07-13 32 views
-2

我繼承了一些我試圖修改的webgame的php代碼。我遇到了這條線,我無法弄清它應該做什麼。有人可以幫我嗎? $ notice只是一個普通的字符串。請爲我解碼這個正則表達式

$notice = preg_replace("#([\S]{60})#i", "\\1 ", $notice); 
+0

*參見[打開源使用RegexBuddy替代(http://stackoverflow.com/questions/89718/is-there)和[在線的正則表達式的測試] (http://stackoverflow.com/questions/32282/regex-testing)提供一些有用的工具,或[RegExp.info](http://regular-expressions.info/)以獲得更好的教程。 – mario

+0

請爲我們學習正則表達式! regular-expressions.info –

+0

[** StackOverflow **](http://bit.ly/4Agih5)是** NOT!**,可以向某人索取免費的「代碼」。 [此類問題對本網站**不好](http://bit.ly/dcqznq),並且將爲[** Closed **](http://bit.ly/18T95z1)或[**刪除**](http://bit.ly/10c3VuR),*取而代之* [瞭解什麼類型](http://bit.ly/r0ZSEc)您可以或應該問的問題。如果您對此有任何疑問,請隨時諮詢[Meta](http://bit.ly/SgO5J),或查看[常見問題](http://bit.ly/18T95z1),瞭解一般信息。 – samayo

回答

7

它會找到的60個非空白字符的任何連續序列$notice,並在其後插入空格:

  • (..)創建一個捕獲組。因爲它是第一組,所以它在替換字符串中被稱爲\1。因爲整個模式都在組中,所以在這裏並不是真的需要。
  • [..]創建一個字符類,但因爲它只包含一個元字符,所以這裏也不是真的需要。
  • \S匹配任何非空白字符
  • {60}是一個量詞;它意味着'重複60次'。

此代碼等同於:

$notice = preg_replace("#\S{60}#i", "\\0 ", $notice); 
+1

非常好的答案。 +1的時間來解釋它,而不是隻發佈正則表達式。 –