Home » Questions » Computers [ Ask a new question ]

How can I get at the matches when using preg_replace in PHP?

How can I get at the matches when using preg_replace in PHP?

"I am trying to grab the capital letters of a couple of words and wrap them in span tags. I am using preg_replace for extract and wrapping purposes, but it's not outputting anything.

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

Asked by: Guest | Views: 150
Total answers/comments: 4
Guest [Entry]

"You need to put the pattern in parentheses /([A-Z])/, like this:

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

"\0 will also match the entire matched expression without doing an explicit capture using parenthesis.

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

As always, you can go to php.net/preg_replace or php.net/<whatever search term> to search the documentation quickly. Quoth the documentation:

\0 or $0 refers to the text matched by the whole pattern."
Guest [Entry]

"From the preg_replace documentation on php.net:

replacement may contain references of
the form \n or (since PHP 4.0.4) $n,
with the latter form being the
preferred one. Every such reference
will be replaced by the text captured
by the n'th parenthesized pattern.

See Flubba's example."
Guest [Entry]

Use parentheses around your desired capture.