58

いくつかの単語の大文字を取得して、スパンタグでラップしようとしています。抽出とラッピングの目的でpreg_replaceを使用していますが、何も出力されません。

preg_replace("/[A-Z]/", "<span class=\"initial\">$1</span>", $str)
4

4 に答える 4

59

次のように、パターンを括弧で囲む必要があります/([A-Z])/

preg_replace("/([A-Z])/", "<span class=\"initial\">$1</span>", $str)
于 2008-08-05T00:36:08.350 に答える
32

\0また、括弧を使用して明示的なキャプチャを行わずに、一致した式全体と一致します。

preg_replace("/[A-Z]/", "<span class=\"initial\">\\0</span>", $str)

いつものように、php.net /preg_replaceまたは php.net/<任意の検索用語> に移動して、ドキュメントをすばやく検索できます。ドキュメントを引用します。

\0 または $0 は、パターン全体に一致するテキストを参照します。

于 2008-08-28T09:02:43.480 に答える
8

php.netのpreg_replace ドキュメントから:

置換 には \n または (PHP 4.0.4 以降) $n の形式の参照を含めることができ、後者の形式が推奨されます。そのような参照はすべて、n 番目の括弧で囲まれたパターンによってキャプチャされたテキストに置き換えられます。

Flubba の例を参照してください。

于 2008-08-05T01:39:36.460 に答える
5

目的のキャプチャを括弧で囲みます。

于 2009-06-23T17:54:51.450 に答える