2013-07-22 4 views
3

Я пытаюсь удалить теги этой страницы до такой степени, что я могу получить список номеров страниц. Поэтому я могу выяснить, какой наивысший номер страницы для моей программы curl продолжит сканирование страницы. Прямо сейчас я могу убрать теги до точки, где получают цифры, но я не могу понять, как отделить каждое число, чтобы я мог видеть, какой наивысший номер страницы.Удалите теги страницы и получите массив или отсортированный список номеров страниц

текущее значение возвращения я получаю это

Вот мой код:

<?php 
// Defining the basic pruning function 
function scrape_between($data, $start, $end){ 
    $data = stristr($data, $start); // Stripping all data from before $start 
    $data = substr($data, strlen($start)); // Stripping $start 
    $stop = stripos($data, $end); // Getting the position of the $end of the data to scrape 
    $data = substr($data, 0, $stop); // Stripping all data from after and including the $end of the data to scrape 
    return $data; // Returning the scraped data from the function 
} 

ob_start(); 
?> 
<span class="current">1</span><a href="javascript:__doPostBack('ctl00$phCenterColumn$motoSearchResults$gvCatalog$ctl01$ctl03','')">2</a><a href="javascript:__doPostBack('ctl00$phCenterColumn$motoSearchResults$gvCatalog$ctl01$ctl04','')"> 

<?php 
$variable = ob_get_clean(); 

$startend5 = Array('">' => '</a>'); 

foreach($startend5 as $o => $p){ 
    $data = scrape_between($variable, $o, $p); 
} 
$data = strip_tags($data); 
echo $data; 
?> 

FYI ob_start(); и ob_get_clean(); только для примера не хотели, чтобы база кода была больше, чем необходимо, включая все команды curl.

+0

вы можете использовать '$ startend5 = Array ('">' => '') ', чтобы получить число' 1', а затем '$ startend6 = Array ('">' => '') ', чтобы получить номер' 2'? – verbumSapienti

+0

Проблема там будет там, как правило, будет более 2 страниц кода примера, который я обрезал. Обычно метки вокруг страницы 2 повторяются несколько раз. Не хотел, чтобы мой почтовый код был длинным. – Shunobies

+0

Также я не могу изменить свою функцию Scrape_between, потому что я использую ее во время моего сканирования зависания веб-сайта несколько раз, и она отлично работает на всем остальном, за исключением этого из-за того, что страница была закодирована без пробелов и не возвращается. – Shunobies

ответ

0

Могу ли я предложить библиотеку PHP DOM. Вы можете получить доступ к этим значения следующим образом:

<?php 
    include 'simple_html_dom.php'; 
    $html = str_get_html("<span class=\"current\">1</span><a href=\"javascript:__doPostBack('ctl00\$phCenterColumn\$motoSearchResults\$gvCatalog\$ctl01\$ctl03','')\">2</a><a href=\"javascript:__doPostBack('ctl00\$phCenterColumn\$motoSearchResults\$gvCatalog\$ctl01\$ctl04','')\">"); 

    $currentPage = $html->find('span.current'); 
    foreach($currentPage as $page) 
    { 
     echo 'current page: ' . $page->plaintext . '<br />'; 
    } 

    $otherPages = $html->find('a'); 
    echo 'other pages: '; 
    foreach($otherPages as $otherPage) 
    { 
     echo $otherPage->plaintext . ' '; 
    } 
?> 

это дало мне:

current page: 1 
other pages: 2 
+0

сделал это произведение ?? – verbumSapienti