Re: [PHP] Capturing part of regex search
- Date: Sun, 23 Aug 2015 19:06:55 -0400
- From: Aziz Saleh <azizsaleh@xxxxxxxxx>
- Subject: Re: [PHP] Capturing part of regex search
On Sun, Aug 23, 2015 at 6:59 PM, Ian Evans <dheianevans@xxxxxxxxx> wrote:
> On Sun, Aug 23, 2015 at 6:52 PM, Aziz Saleh <azizsaleh@xxxxxxxxx> wrote:
> > On Sun, Aug 23, 2015 at 6:30 PM, Ian Evans <dheianevans@xxxxxxxxx>
> >> I've been looking at the regex functions. Either it's a lack of caffeine
> >> or
> >> it's right in front of my nose, but how do I put part of a regex find
> >> a variable? Plus I suck at regex.
> >> e.g.
> >> I'm interested in capturing the names of people who are found in text
> >> surrounded by the following format:
> >> "John Doe":/cr/johndoe/ or "Jane Smith":/cr/janesmith/
> >> I'd want to place John Doe or Jane Smith into the variable. The search
> >> will
> >> always be for "name":/cr/nameurl/
> >> What regex and php function would I use? Thanks for any pointers. One of
> >> these days I'll master regex.
> > If the names will always contain double quotes, it should be as easy as:
> > $var = ' "John Doe":/cr/johndoe/ or "Jane Smith":/cr/janesmith/';
> > preg_match_all('/".*"/U', $var, $res);
> > print_r($res);
> > U to make it ungreedy (its greedy by default). If there are other quotes
> > in the text, you can add the colon to the expression as well.
> Thanks. There might be other quotes in the article, so if I include the
> colon, it'd be before the /U?
Yeah, you might also want to do a select to avoid getting the actual quotes:
preg_match_all('/"(.*)":/U', $var, $res);