Соскоб экрана - PullRequest
       28

Соскоб экрана

2 голосов
/ 17 мая 2010

Привет! Я пытаюсь реализовать сценарий очистки экрана на моем веб-сайте, и пока у меня есть следующий набор.В конечном итоге я пытаюсь заменить все ссылки в переменной $ results, которые имеют "ResultsDetails.aspx?"в «результаты-царапать детали /», а затем снова вывести.Кто-нибудь может указать мне правильное направление?

<?php 
$url = "http://mysite:90/Testing/label/stuff/ResultsIndex.aspx";
$raw = file_get_contents($url);
$newlines = array("\t","\n","\r","\x20\x20","\0","\x0B");
$content = str_replace($newlines, "", html_entity_decode($raw));
$start = strpos($content,"<div id='pageBack'");
$end = strpos($content,'</body>',$start) + 6;
$results = substr($content,$start,$end-$start);
$pattern = 'ResultsDetails.aspx?';
$replacement = 'results-scrape-details/';
preg_replace($pattern, $replacement, $results);
echo $results;

Ответы [ 2 ]

10 голосов
/ 17 мая 2010

Используйте инструмент DOM, например PHP Simple HTML DOM . С его помощью вы можете найти все ссылки, которые вы ищете с синтаксисом Jqueryish.

// Create DOM object from HTML source
$dom = file_get_html('http://www.domain.com/path/to/page');
// Iterate all matching links
foreach ($dom->find('a[href^=ResultsDetails.aspx') as $node) {
    // Replace href attribute value
    $node->href = 'results-scrape-detail/';
}
// Output modified DOM
echo $dom->outertext;
0 голосов
/ 17 мая 2010

? char имеет особое значение в регулярных выражениях - либо избегайте его и используйте тот же код, либо замените preg_replace на str_ireplace () (я бы рекомендовал последний подход, так как он также более эффективен).

(и действительно ли должен быть вызов html_entity_decode?)

С

...