WordPress spits posts in this format:
<h2>Some header</h>
<p>First paragraph of the post</p>
<p>Second paragraph of the post</p>
etc.
To get my cool styling on the first paragraph (it’s one of those things that looks good only sparingly) I need to hook into the get_posts function to filter its output with a preg_replace.
The goal is to get the above code to look like:
<h2>Some header</h>
<p class="first">First paragraph of the post</p>
<p>Second paragraph of the post</p>
I have this so far but it’s not even working (the error is: “preg_replace() [function.preg-replace]: Unknown modifier ‘]'”)
$output=preg_replace('<p[^>]*>', '<p class="first">', $content);
I can’t use CSS3 meta-selectors because I need to support IE6, and I can’t apply the :first-line meta-selector (this is one that IE6 supports) on the parent container because it would hit the H2 instead of the first P.
Reading through the answers there are some that will work but all have drawbacks of either using an external parsing library or possibly matching tags other than the P tag or also matching its attributes.
I ended up using this solution with the str_replace_once function from here:
Simple enough and it works just as intended. Here’s full WordPress code snippet to filter the first paragraph any time the_content() is called:
Thanks for all the answers!