如何从php中的preg_match获取特定值

时间:2018-01-25 06:50:06

标签: php regex

我需要来自给定网址的此值。我在PHP中编写了一个函数,但无法获得正确的值。

URL:

<a href="/search/name?birth_place=Madras,%20Tamil%20Nadu,%20India&amp;ref_=nmbio_ov_3">Madras, Tamil Nadu, India</a>

功能:

function match($regex, $str, $i = 0){
    if(preg_match($regex, $str, $match) == 1)
        return $match[$i];
    else
        return false;
}

$arr = array();<br>
$arr['birthplace'] = trim(match('/&lt;a href="\/search\/name\?birth_place=.+?">(.*?)<\/a>/', '&lt;a href="/search/name?birth_place=Madras,%20Tamil%20Nadu,%20India&amp;ref_=nmbio_ov_3">Madras, Tamil Nadu, India&lt;/a>', 1));

另外,我希望获得2个值,如()中的任何匹配应该存储在数组中。例如,在上面的表达式中,如果我make()2次,那么函数应该捕获两种情况。

1 个答案:

答案 0 :(得分:0)

您可以尝试这种方法(run here

$re = '/birth_place=\K[^&]+/';
$str = '<a href="/search/name?birth_place=Madras,%20Tamil%20Nadu,%20India&ref_=nmbio_ov_3">Madras, Tamil Nadu, India<\\/a>';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
$arr=explode(',%20',$matches[0][0]);
foreach($arr as $key=>$value) 
$arr[$key] = preg_replace('/%20/','',$arr[$key]);
print_r($arr);