2014-01-18 121 views
0

\ w字符類型是怎麼回事?目前它輸出一個名爲$ replace的數組,除了每個名字的第一個字母外,它的名字都是全名。我真的不明白它在做什麼來達到這一點。 \ w是任何單詞字符,但這並不能幫助我。這個preg_replace是怎麼回事?

<?php 

$rappers = array('Drake Themotto', 'Tom Ford', 'Lil Wayne'); 

$replace = preg_replace('/(\w)\w* (\w)/', '\1 \2', $rappers); 

print_r($replace); 

?> 
+1

我們沒有您的代碼,所以我們無法真正識別您的問題。 – hichris123

+1

莉爾韋恩必須是問題。/s – elclanrs

回答

0

從左至右你的正則表達式包含:

  1. A組用一個字字符
  2. 零個或多個單詞字符
  3. 的空間
  4. A組用一個字字符

對於「德雷克Themotto」這意味着:

  1. 第一組\ 1將是「d」
  2. 以下單詞字符「耙」的比賽,但將不被存儲
  3. 的空間不會被存儲
  4. 第二組\ 2將是「T」

爲了替換,這意味着您的字符串的匹配部分是「Drake T」。在這種情況下,該匹配字符串將被替換爲「\ 1 \ 2」,即「D T」。

之後,還有一些其他字符「hemotto」。你沒有在你的正則表達式中提到它們,但是因爲它沒有包含一個$來標記字符串的末尾(在這種情況下,正則表達式不匹配)或另一個\ w *匹配(=在這種情況下:去除)字符串的其他字符,這個其餘的字符將被忽略。因爲你只是「替換」某些東西,所以「忽略」意味着這裏什麼都不會被替換,它會被附加到結果中。

+0

謝謝!幫助了很多,並且非常有意義! – user3208758