我正在尝试获取要在输出中显示的页面的某些部分。
<?php //right wing - up to ages 22 - potential range of 84 to 99
$ch = curl_init("https://sofifa.com/players?
aeh=22&ptl=84&pth=99&pn=27&pn=25&pn=23");// This will do
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$output = curl_exec($ch);
echo $output;
curl_close($ch);
?>
上面的代码打印了URL的整个HTML。我希望某些零件显示,例如玩家名称。下图显示了输出的整个页面。我试图仅显示播放器的名称,以及他们的评分,年龄和潜力。.
有什么办法可以做到这一点?页面的图像
您不使用卷曲来显示 parts of the page
,而是使用它来获取页面。然后,一旦获得页面,就必须使用其他内容来解析您感兴趣的页面的一部分。该页面是用HTML编写的,请检查此答案,以获取php的HTML解析实用程序列表。p>至于如何从此特定页面解析特定信息,页面中只有1个 tbody
标签,每个播放器都有自己的专用tr
标签,这是该tbody
标签的直接孩子,因此您可以迭代tbody
的tr
孩子通过玩家迭代。这些tr
标签中的每一个都有td
的孩子,其中包含您想要的信息。第二td
标签的文本内容具有其名称,第三个标签具有年龄,第四个评分,第五次具有潜力。
使用domdocument parser的示例:
<?php
declare(strict_types = 1);
$ch = curl_init ( "https://sofifa.com/players?aeh=22&ptl=84&pth=99&pn=27&pn=25&pn=23" );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
$output = curl_exec ( $ch );
curl_close ( $ch );
$domd = @DOMDocument::loadHTML ( $output );
foreach ( $domd->getElementsByTagName ( "tbody" )->item ( 0 )->getElementsByTagName ( "tr" ) as $tr ) {
$tds = $tr->getElementsByTagName ( "td" );
$player = array (
'name' => trim ( $tds->item ( 1 )->textContent ),
'age' => trim ( $tds->item ( 2 )->textContent ),
'rating' => trim ( $tds->item ( 3 )->textContent ),
'potential' => trim ( $tds->item ( 4 )->textContent )
);
print_r ( $player );
}