Я пытаюсь удалить содержание с этой веб-страницы:
www.motorcyclemonster.com/motorcycle-events.html, код, который я использую:
<?php
$content = file_get_contents('http://www.motorcyclemonster.com/motorcycle-events.html');
$pattern = '#<tr.">\r\n<td>(.*)</td>\r\n<td>(.*)</td>#';
preg_match_all ($pattern, $content, $data);
var_dump($data);
for ($i = 0; $i < 11; $i++)
{
echo "<br /><br />". $data[2][$i].' '.$data[3][$i];
}
?>
Я просто хотел бы иметь возможность получить информацию из следующих
<tr>
<td width="23%" bgcolor="#76C2FA">Nov 15 - Jan 4</td>
<td width="52%" bgcolor="#76C2FA"><b> <a href="/events/cars-and-christmas-2014-11-15-Hershey-PA.html" title="Cars and Christmas - Hershey, Pennsylvania">Cars and Christmas</a></b></td>
<td width="20%" bgcolor="#76C2FA">Hershey</td>
<td width="5%" bgcolor="#76C2FA">PA</td>
</tr>
и быть в состоянии установить некоторые переменные для
<tr>
<td width="23%" bgcolor="#76C2FA">**$date**</td>
<td width="52%" bgcolor="#76C2FA"><b><a href=**$page_url**" title="**$title**">$title</a></b></td>
<td width="20%" bgcolor="#76C2FA">**$city**</td>
<td width="5%" bgcolor="#76C2FA">**$state**</td>
</tr>
Любая помощь будет благодарна
Разбор HTML-тэгов с помощью регулярных выражений не такая уж хорошая идея (по разным причинам). Я бы предпочел проверить PHP DOM, как это специально сделано для таких целей.
Самый простой способ сделать это — использовать PHP простой HTML Dom Parser
<?php
/**
* Created by PhpStorm.
* User: Adrian
* Date: 05/12/2014
* Time: 19:28
*/
//Load website
include('simple_html_dom.php');
$html = file_get_html('http://www.motorcyclemonster.com/motorcycle-events.html');
//For each table row
$events = array();
foreach($html->find('table',2)->find('tr') as $h){
$temp = array();
//get date
$temp['date'] = $h->find('td', 0)->innertext; //Inner contents of first cell
if($url = $h->find('td', 1)) {
if($url = $url->find('a', 0)) {//First link of second cell
$temp['url'] = $url->href; //href attribute
$temp['url_title'] = $url->title; //title attribute
$temp['title'] = $url->innertext; // Inner content of link
$temp['town'] = $h->find('td', 2)->innertext;
$temp['state'] = $h->find('td', 3)->innertext;
$events[] = $temp;
}
}
}
print_r($events);
Примечание. Сначала необходимо включить Simple HTML Dom Parser.
Затем вы можете перебрать этот массив событий, чтобы отобразить его так, как вы хотите
Как обычная вежливость, я бы предоставил, возможно, только первую страницу или 2, и предоставил бы ссылку на исходный сайт для полного списка