Вопрос

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

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

Это было полезно?

Решение

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

  

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top