1

PHPでは、 preg_replace()の$replacementとして\1または$1を使用することの違いは何ですか?

どちらも機能し、まったく同じことをしているように見えますが、ここで何かが欠けていると思います。

4

1 に答える 1

5

あなたは何も見逃していません。$nのみを使用できる状況は1つだけです。

後方参照の直後に別の数値が続く置換パターンを使用する場合(つまり、一致したパターンの直後にリテラル番号を配置する場合)、後方参照に使い慣れた\1表記を使用することはできません。たとえば、\ 11はpreg_replace()を混乱させます。これは、\ 1の後方参照の後にリテラル1が続くのか、\11の後方参照の後に何も続くのかがわからないためです。この場合の解決策は、\ ${1}1を使用することです。これにより、分離された$ 1の後方参照が作成され、1はリテラルのままになります。

それを除けば、両者の間に全く違いはありません。

于 2009-09-13T17:04:51.013 に答える