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
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.
You need to put the pattern in parentheses /([A-Z])/
, like this:
preg_replace("/([A-Z])/", "<span class=\"initial\">$1</span>", $str)
Use parentheses around your desired capture.
\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.