Get the Intro: PHP Paragraph Regular Expression
Recently I was playing around with WordPress' wp_posts table. I wanted to grab the basic information about my posts (ID, title, content, slug) and build a quick summary list of them. One problem I ran into was creating a content "intro." Luckily a quick regular expression allowed me to create the intro.
The PHP
preg_match("/<p>(.*)<\/p>/",$post['post_content'],$matches);
$intro = strip_tags($matches[1]); //removes anchors and other tags from the intro
The above code extracts the first paragraph in a string. Since all of my posts begin with an introductory paragraph, this type of system will work.
![How I Stopped WordPress Comment Spam]()
I love almost every part of being a tech blogger: learning, preaching, bantering, researching. The one part about blogging that I absolutely loathe: dealing with SPAM comments. For the past two years, my blog has registered 8,000+ SPAM comments per day. PER DAY. Bloating my database...
![How to Create a Twitter Card]()
One of my favorite social APIs was the Open Graph API adopted by Facebook. Adding just a few META tags to each page allowed links to my article to be styled and presented the way I wanted them to, giving me a bit of control...
![Fx.Rotate: Animated Element Rotation with MooTools]()
I was recently perusing the MooTools Forge and I saw a neat little plugin that allows for static element rotation: Fx.Rotate. Fx.Rotate is an extension of MooTools' native Fx class and rotates the element via CSS within each A-grade browser it...
![MooTools OpenLinks Class – Updated]()
A long time back I coded a MooTools class called OpenLinks. The class is quite useful but the code...sucks. I've gotten much better with MooTools over the past years so I thought I'd go back and update the class to be better, faster...
A few things I’d recommend. allow for a CSS style in your regex, make the regex case-insensitive, and have the regex treat the subject as a single line.
preg_match("/<p.*>(.*)<\/p>/is",$post['post_content'],$matches);Good suggestion Matt!
@Matt, you probably meant:
Otherwise, it would match everything between the first <p> tag and the last </p>
@Jeremy, that’s it! i knew i was forgetting something.
Has one of you ever read the doc ?
preg_match('#<p[^>]*>(.*)</p>#isU', $post['post_content'], $matches);The “i” modifier allow paragraph tag name to be lower case or upper case. The “s” modifier allow dot metacharacter to match all characters, including newlines. The “U” modifier make pattern really matching only the first paragraph instead of everything between the first p end the last p. Using the “#” delimiter for your pattern make it more readable when dealing with HTML tags and using single quote to declare the pattern string don’t start PHP automatic search for somes vars to replace.
David, are you doing this from within wordpress via a plugin or something, or outside wordpress and just accessing the database?
If the first one there are better ways of doing it by using the WP functions, like the_excerpt_rss()…
Slight correction to Grouchy Smurf’s regex:
$pattern = “#]*>(.*?)#is”;
What does this code actually do? Is there any way to style the first paragraph by separating it first in PHP, then using CSS?
nice idea, but how do I add the code? how if i just paste it after the_title ? is it works if i do that?
This worked like a champ, but lets say I wanted to get the rest of the content now, minus the intro paragraph? how would I go about doing that? for example. i want to show the intro paragraph using your code, then create a div that would enclose the rest of the actual content that I would be able to toggle through a read more link.
Hi,
I’m in a trouble with php paragraph replace. I’ve following para
{tab=Sed facilisis consequat libero}Fusce eu ligula purus, eu ultricies nisl.Fusce eu ligula purus, eu ultricies nisl. Curabitur sed leo felis. {/tab}
{tab=Curabitur ultricies sapien}Sed facilisis consequat libero, at tincidunt neque tristique vitae. {/tab}
my aim is to replace
{tab=name}something{/tab}tosomethingReg exp. i’m using is:
/({tab.+?})(.*\S)({\/tab})/sIts working fine with single line or para. but not with multiline.
Can anybody suggest how to fix it.
Thanks in Advance…
Could you please help me to preg match two or more paragraph,I mean all the paragraph from the $post[‘post_content’]