当使用此代码从http://www.ea.com/uk/football/profile/Calfreezy/360获取数据时,代码只是回显“Array”这个词
这是我目前正在使用的代码:
<?php
$content = file_get_contents("http://www.ea.com/uk/football/profile/Calfreezy/360");
preg_match('#<div class="stat">Titles Won<span>([0-9\.]*)<span class="sprite13 goalImage cup"></span></span>#', $content, $titleswon);
echo 'Titles Won: '.$titleswon.'';
?>
这是我试图从网址中提取的HTML:
<div class="stat">
Titles Won <span>0<span class="sprite13 goalImage cup"></span></span>
</div>
这只是返回获胜的标题:数组
如果工作它应该返回标题赢了:0
我做错了什么,谢谢。
答案 0 :(得分:2)
您正在打印整个匹配数组,而不是从中选择所需的索引并打印它们。
如果提供了匹配,那么它将填充搜索结果。
$matches[0]
将包含与完整模式匹配的文本,$matches[1]
将具有与第一个捕获的带括号的子模式匹配的文本,依此类推。
答案 1 :(得分:2)
preg_match()生成一系列匹配项。如果在字符串上下文中打印出一个数组,则会得到Array
作为文本。 e.g。
$arr = array('foo' => 'bar');
echo $arr; // prints "Array"
echo $arr['foo']; // prints "bar"
答案 2 :(得分:1)
答案 3 :(得分:0)
最好的方法是:
if (preg_match('#<div class="stat">Titles Won<span>([0-9\.]*)<span class="sprite13 goalImage cup"></span></span>#', $content, $titleswon)) {
echo 'Titles Won: '.$titleswon[1].'';
}
答案 4 :(得分:0)
第三个参数preg_match通过引用传递,并包含一个在每个捕获组中都有匹配的数组。您正在使用两个&#34;组&#34;。整场比赛和([0-9\.]*)
将是第二场比赛。所以我希望你需要这个:
echo 'Titles Won: '.$titleswon[1].''; // note the array is indexed by 0
答案 5 :(得分:0)
如果您查看preg_match文档: http://php.net/manual/en/function.preg-match.php
你可以看到$ match参数实际上是一个数组,$ match [0]包含整个匹配,以及包含子查询的连续数组元素。
如果您var_dump($titleswon)
或print_r($titleswon)
,您会看到所有信息,那么您可以访问所需的信息,在您的情况下,$titleswon[1]