【问题标题】:Remove white space from scraped text从抓取的文本中删除空格
【发布时间】:2015-10-21 21:41:15
【问题描述】:
$url = 'MyUrl';

$contents = file_get_contents($url); 

function scrape_between($data, $start, $end){
    $data = stristr($data, $start); 
    $data = substr($data, strlen($start));
    $stop = stripos($data, $end);
    $data = substr($data, 0, $stop);
    return $data;
}

$svetaines_turinys = trim(scrape_between($contents, "<table border=\"0\" cellspacing=\"0\">", "</table>"));

$fp = fopen("autogidas.php", "w+"); 

fwrite ($fp, "$svetaines_turinys"); 

fclose ($fp); 

$fh = fopen("autogidas.php", 'r') or die("negalima atidaryti");

while(! feof($fh)) {

    $visa_data1 = fgets($fh);

    $visa_data = trim($visa_data1);

    $pavadinimas = trim(scrape_between($visa_data, "<span class=\"ttitle2\">", "</span>"));
    $metai = trim(scrape_between($visa_data, "<span class=\"ttitle1\">", "</span>"));
    $kaina = trim(scrape_between($visa_data, "<span class=\"ttitle1\" style='float: left;'>", "<br /><span class=\"grey\">"));

    echo "$pavadinimas<br> $metai <br> $kaina . <br><br>";
}

fclose($fh);

输出工作正常,但问题是输出有很多可用空间,我尝试使用trim(),但没有解决问题。

【问题讨论】:

  • 这个scrape_between函数到底是做什么的?

标签: php web web-scraping fopen


【解决方案1】:

你可以只使用正则表达式来完成这个任务,这样的事情会很好地工作:

$metai = preg_replace('/\s+/', ' ',scrape_between($visa_data, "<span class=\"ttitle1\">", "</span>"));

只需对每个有相同问题的 var 执行此操作即可。

【讨论】:

  • 所以它不是空格,它更像是“新行”,试试这个:preg_replace("/(\r?\n){2,}/", "\n\n", $yourVariable);
【解决方案2】:

如果您的意思是要删除多个空格并只留下一个空格,您可以像这样使用str_replace()

function scrape_between($data, $start, $end){
    $data = stristr($data, $start); 
    $data = substr($data, strlen($start));
    $stop = stripos($data, $end);
    $data = substr($data, 0, $stop);
    return str_replace('  ', ' ', $data);
}

【讨论】:

  • 你能告诉我们这个空白是由什么组成的吗,也许不仅仅是空格
  • 你将不得不写一些更复杂的东西来从那个抓取中提取有用的数据。查看该页面的页面源以了解您正在处理的内容
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-09
  • 2019-12-25
相关资源
最近更新 更多