我需要来自给定网址的此值。我在PHP中编写了一个函数,但无法获得正确的值。
URL:
<a href="/search/name?birth_place=Madras,%20Tamil%20Nadu,%20India&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('/<a href="\/search\/name\?birth_place=.+?">(.*?)<\/a>/', '<a href="/search/name?birth_place=Madras,%20Tamil%20Nadu,%20India&ref_=nmbio_ov_3">Madras, Tamil Nadu, India</a>', 1));
另外,我希望获得2个值,如()中的任何匹配应该存储在数组中。例如,在上面的表达式中,如果我make()2次,那么函数应该捕获两种情况。
答案 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);