慢慢地,但肯定的是,我正在组建一个供个人使用的网站,在那里我搜索电影的名称并且它返回了它的元音评级。这是我到目前为止所得到的:
$web = file_get_contents("http://www.metacritic.com/movie/the-lion-king");
preg_match(
'/<span class="score_value" property="v:average">(.*?)<\/span>/s',
$web,
$match
);
foreach ($match as $score) {
$sc = $score;
echo $sc;
}
结果:
8383
它应该只返回83而不是8383。
我指出了元评级所在的位置,因为我需要抓住这些信息。我不确定它是否正确?可能是一些非常粗糙的工作,我不太了解preg_match,在线文档没有帮助。
有人可以帮帮我吗?
答案 0 :(得分:11)
您应该只回显$score[1]
,因为这是您第一次捕获的带括号的子模式的位置。
答案 1 :(得分:5)
供参考:
array(2) {
[0]=>
string(56) "<span class="score_value" property="v:average">83</span>"
[1]=>
string(2) "83"
}
Manual读到:
如果提供了匹配,那么它将填充搜索结果。 $ matches [0]将包含与完整模式匹配的文本,$ matches [1]将具有与第一个捕获的带括号的子模式匹配的文本,依此类推。
答案 2 :(得分:1)
在匹配上使用print_r是肯定的,但我认为它将括号中的反向引用值打印为第二个