Php 使用简单的HTMLDOM进行解析,将结果放入数组中,然后只获取我想要的结果
我很确定我的头衔可能会把你弄糊涂,但我有个问题。简单地说,我正在解析$url中的所有标题名,然后将它们打印出来……这很好。问题是:如果我不想显示第一个标题名和第三个标题名,该怎么办?是否可以将代码右转到foreach并说,例如,不要获取第一个[0]和第三个[2],而是获取所有其他标题名。如果答案是肯定的,请重定向我,因为我找不到thanx 下面是我的代码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
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);
我知道正则表达式。。但这不是我要问的。。这个例子也返回了我的错误。我修改了剧本。你现在可以用了。当然。。。。有时候它很简单,但我甚至想都不敢想。谢谢你,先生。这不是我的问题。我知道如何获取数据。