Php 使用简单的HTMLDOM进行解析,将结果放入数组中,然后只获取我想要的结果

Php 使用简单的HTMLDOM进行解析,将结果放入数组中,然后只获取我想要的结果,php,web-scraping,simple-html-dom,Php,Web Scraping,Simple Html Dom,我很确定我的头衔可能会把你弄糊涂,但我有个问题。简单地说,我正在解析$url中的所有标题名,然后将它们打印出来……这很好。问题是:如果我不想显示第一个标题名和第三个标题名,该怎么办?是否可以将代码右转到foreach并说,例如,不要获取第一个[0]和第三个[2],而是获取所有其他标题名。如果答案是肯定的,请重定向我,因为我找不到thanx 下面是我的代码 include 'lib/simple_html_dom.php'; $url="http://hallofbeorn.com/LotR?C

我很确定我的头衔可能会把你弄糊涂,但我有个问题。简单地说,我正在解析$url中的所有标题名,然后将它们打印出来……这很好。问题是:如果我不想显示第一个标题名和第三个标题名,该怎么办?是否可以将代码右转到foreach并说,例如,不要获取第一个[0]和第三个[2],而是获取所有其他标题名。如果答案是肯定的,请重定向我,因为我找不到thanx

下面是我的代码

include 'lib/simple_html_dom.php';

$url="http://hallofbeorn.com/LotR?CardSet=The+Hunt+for+Gollum";
$html=file_get_html($url);

$array = [];

foreach ($html->find('a[style="margin-bottom:2px;font-size:medium;font-weight:bold;display:inline- 
block;"]') as $values) {
$array[] = $values->plaintext;
}

print_r($array);
我知道我可以这样做:print_r$array[1];打印r$数组[3];打印r$array[4];。。。。。。。。。。。。。等等,但我想问的是,在foreach中是否有更快的方法,您应该看看regex。 试试这个:

$url="http://hallofbeorn.com/LotR?CardSet=The+Hunt+for+Gollum";
$html=file_get_contents($url);
$pattern = '/<a href="(.*)" style="margin-bottom:2px;font-size:medium;font-weight:bold;display:inline-block;">(.*)<\/a>/m';
preg_match_all($pattern, $html, $matches);
print_r($matches[2]);
一个简单的if语句可以帮助您:

foreach$html->find'a[style=margin-bottom:2px;font-size:medium;font-weight:bold;display:inline-block;]'为$i=>$value{ 如果$i!=0&&$i!=2{ $array[]=$values->纯文本; } } 打印r$数组;
您可以使用regex获取数据

$url="http://hallofbeorn.com/LotR?CardSet=The+Hunt+for+Gollum";
$html=file_get_contents($url);
$pattern = '/(?P<cards><a href=".*" style="margin-bottom:2px;font-size:medium;font-weight:bold;display:inline-block;">.*<\/a>)/';
preg_match_all($pattern, $html, $matches);
header('content-type: text/plain; charset=utf-8');
print_r($matches);

我知道正则表达式。。但这不是我要问的。。这个例子也返回了我的错误。我修改了剧本。你现在可以用了。当然。。。。有时候它很简单,但我甚至想都不敢想。谢谢你,先生。这不是我的问题。我知道如何获取数据。