Вопрос о preg_replace в PHP - PullRequest
       16

Вопрос о preg_replace в PHP

1 голос
/ 13 сентября 2009

В PHP какая разница между использованием \ 1 или $ 1 в качестве замены $ в preg_replace ()?

Они оба работают и, кажется, делают одно и то же, но я думаю, что здесь что-то упущено.

1 Ответ

5 голосов
/ 13 сентября 2009

Ты ничего не пропустил. Существует только одна ситуация, когда можно использовать только $ n:

При работе с шаблоном замены, когда за обратной ссылкой сразу следует другой номер (т. Е. Размещать литеральное число сразу после сопоставленного шаблона), вы не можете использовать знакомую запись \ 1 для своей обратной ссылки. Например, \ 11 может привести к путанице preg_replace (), поскольку он не знает, хотите ли вы, чтобы обратная ссылка \ 1 следовала за литералом 1, или за обратной ссылкой \ 11 не следовала ничего. В этом случае решение состоит в использовании \ $ {1} 1. Это создает изолированную обратную ссылку $ 1, оставляя 1 как литерал.

Кроме того, между ними нет абсолютно никакой разницы.

...