Domanda

In PHP qual è la differenza tra l'utilizzo di \ 1 o $ 1 come $ sostituto in preg_replace ()?

Entrambi funzionano e sembrano fare esattamente la stessa cosa, ma penso che mi manchi qualcosa qui.

È stato utile?

Soluzione

Non ti manca nulla. C'è solo una situazione in cui è possibile utilizzare solo $ n:

  

Quando si lavora con un modello sostitutivo in cui un backreference è immediatamente seguito da un altro numero (ovvero: posizionare un numero letterale immediatamente dopo un pattern corrispondente), non è possibile utilizzare la notazione familiare \ 1 per il proprio backreference. \ 11, ad esempio, confonderebbe preg_replace () in quanto non sa se si desidera il backreference \ 1 seguito da un 1 letterale o il backreference \ 11 seguito da nulla. In questo caso, la soluzione è utilizzare \ $ {1} 1. Questo crea un backreference di $ 1 isolato, lasciando 1 come letterale.

A parte questo, non c'è assolutamente alcuna differenza tra i due.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top