2014-01-18 2 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. группа с одним словом характер
  2. Ноль или более слов символов
  3. Пространство
  4. группа с одним словом характер

Для "Drake Themotto" означает:

  1. Первая группа \ 1 будет «D»
  2. Следующие символы слово «грабли» матч, но не будут сохранены
  3. пространство не будет храниться
  4. Вторая группа \ 2 будет be "T"

Для замены это означает, что соответствующая часть вашей строки является «Drake T». В этом случае эта совпадающая строка будет заменена на «\ 1 \ 2», которая является «D T».

После этого есть еще несколько персонажей «гетто». Вы не упоминали их в своем регулярном выражении, но поскольку он не содержит $, чтобы пометить конец строки (в этом случае регулярное выражение не будет соответствовать) или другой \ w * для соответствия (= в этом случае: для удаления) другие символы строки, этот остаток просто будет проигнорирован. Поскольку вы просто «заменяете» что-то, «игнорируется» означает, что здесь ничего не будет заменено, и оно будет добавлено к результату.

+0

Спасибо! Помогли много и сделали прекрасный смысл! – user3208758

Смежные вопросы