Php 为什么我的赛前成绩会翻倍?
慢慢地,但肯定的是,我正在组装一个供个人使用的网站,在那里我搜索一部电影的名字,它会返回它的元批评评级。以下是我目前得到的信息:Php 为什么我的赛前成绩会翻倍?,php,Php,慢慢地,但肯定的是,我正在组装一个供个人使用的网站,在那里我搜索一部电影的名字,它会返回它的元批评评级。以下是我目前得到的信息: $web = file_get_contents("http://www.metacritic.com/movie/the-lion-king"); preg_match( '/<span class="score_value" property="v:average">(.*?)<\/span>/s', $web,
$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;
}
它应该只返回83,而不是8383
我指出了元批评评级的位置,因为我需要获取这些信息。我不确定它是否正确?可能是一些非常粗糙的工作,我不太了解preg_match,网上的文档一点帮助都没有
有人能帮我吗?您应该只回显
$score[1]
,因为这是您第一个捕获的带括号的子模式的位置
阅读文档以确定是否在匹配项上使用“打印”,但我认为它正在将括号中的后参考值打印为第二个值,以供参考:
array(2) {
[0]=>
string(56) "<span class="score_value" property="v:average">83</span>"
[1]=>
string(2) "83"
}
数组(2){
[0]=>
字符串(56)“83”
[1]=>
字符串(2)“83”
}
内容如下:
如果提供了匹配项,则它将填充搜索结果$匹配项[0]将包含与完整模式匹配的文本,$matches[1]将包含与第一个捕获的括号子模式匹配的文本,依此类推。Gosh,所以正则表达式无法解析html?谢谢你,克里斯!因为你是新来的,所以我会给你一个友好的建议。你应该选择下面的答案来接受。我要推荐克里斯特的答案,因为这个答案在我之前就已经发布了,而且同样有效。谢谢你的建议,蒂姆,我确实接受了他的答案。我以前不能做,因为有一个计时器,愚蠢的计时器。所以我错了,我做了一个不必要的循环,不是吗?我很惭愧。谢谢你,克里斯特!!这就是为什么我的循环要加倍。我不明白[0]怎么只显示了83,它不应该显示整个
“83”
?它显示了。但跨度在输出中是不可见的。:)如果您查看源代码,它会显示出来。
array(2) {
[0]=>
string(56) "<span class="score_value" property="v:average">83</span>"
[1]=>
string(2) "83"
}