2012-03-25 1 views
3

Я прочитал документацию о функции preg_filter, это выглядит следующим образом. Это from php.net сайт.

$subject = array('1', 'a', '2', 'b', '3', 'A', 'B', '4'); 
$pattern = array('/\d/', '/[a-z]/', '/[1a]/'); 
$replace = array('A:$0', 'B:$0', 'C:$0'); 

print_r(preg_filter($pattern, $replace, $subject)); 

Здесь в массиве $ заменить некоторые переменные, доступные как это - $0 Когда я пытаюсь это она возвращается значение было доступно, прежде чем заменить. Является ли это общей переменной на PHP или она доступна только для функций PCRE? И я видел $1, $2, $3 ... тоже в некоторых статьях.

Обычно мы не можем иметь переменные, начинающиеся с цифр.

Так может ли кто-нибудь объяснить эту функцию и переменную?

+0

«A: $ 0» находится между одинарными кавычками, он все равно не будет интерпретироваться как переменная. – haltabush

ответ

5

$0 представляет всю часть строки, которая соответствует шаблону. $1 и т. Д. Представляют собой подшаблоны.

+0

Можете ли вы, пожалуйста, дать мне образец для поднабора, чтобы увидеть значение в 1 доллар. – sugunan

+0

Пример: 'preg_match ("/abc (def) ghi/"," 012abcdefghi345 ", $ m); var_dump ($ м)); '. Индексы массива '$ m' могут использоваться в замене как' $ 0' и '$ 1'. –

+0

Я получил это. Спасибо за руководство. – sugunan

1

От manual page for preg_filter:

preg_filter() идентична preg_replace() за исключением того, что возвращает только (возможно преобразованных) предметы, где Был матч. Подробнее о том, как работает эта функция, читайте в документации preg_replace().

Из manual page for preg_replace:

$ 0 ссылается на текст согласованного по всему шаблону.

1

Из PHP инструкции по preg_replace - http://php.net/manual/en/function.preg-replace.php:

Каждая такая ссылка будет заменена текстом, захваченном n-й скобки, шаблон. n может быть от 0 до 99, а \ 0 или $ 0 относится к текст, соответствующий всему шаблону.

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

  • Нет связанных вопросов^_^