Re: Capturing part of regex search

From: Date: Mon, 24 Aug 2015 20:02:01 +0000
Subject: Re: Capturing part of regex search
References: 1 2 3 4  Groups: php.general 
Request: Send a blank email to php-general+get-325071@lists.php.net to get a copy of this message
On Sun, Aug 23, 2015 at 7:06 PM, Aziz Saleh <azizsaleh@gmail.com> wrote: > > > On Sun, Aug 23, 2015 at 6:59 PM, Ian Evans <dheianevans@gmail.com> wrote: > >> On Sun, Aug 23, 2015 at 6:52 PM, Aziz Saleh <azizsaleh@gmail.com> wrote: >> >> > >> > >> > On Sun, Aug 23, 2015 at 6:30 PM, Ian Evans <dheianevans@gmail.com> >> wrote: >> > >> >> 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 >> into >> >> 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); > print_r($res[1]); > Thanks so much, that worked like a charm. Just realized that it will grab all links in the article. (These are PHPTextile formatted links). So if I want to narrow it down to just the links with /cr/ is this the correct escaped forma: preg_match_all('/"(.*)":\/cr\//U', $var, $res);

« previous php.general (#325071) next »