2013-08-11 2 views
0

Я извлекаю данные с веб-сайта, и приведенный ниже сценарий отлично работает, когда я разбираю отдельные слова, такие как «математика, химия, наука» и т. Д. Однако, если я попытаюсь разобрать ключевое слово, которое содержит пространство между ними, например «бизнес-математика» и т. д. браузер просто загружается навсегда, он, похоже, не работает. Пожалуйста, руководство меня ..Разбор ключевых слов, содержащих пробел между словами

<?php 
include("simple_html_dom.php"); 

$keywords = "business math,chemistry,science"; 
$keywords = explode(',', $keywords); 

foreach($keywords as $keyword) { 
    echo '<br><b><font color="red">Keyword: </font><font color="blue">'.$keyword.'</font></b><br>'; 

    $html = file_get_html('http://www.tutorvista.com/search/'.$keyword); 

    $i = 1; 
    foreach($html->find('div[style=padding:20px; border-top:thin solid #DDDDDD; border-bottom:none;]') as $element) { 
     foreach($element->find('div[class=entry-abstract]') as $div) { 
      $title[$i] = $div->plaintext.'<br><br>'; 
     } 
     $i++; 
    } 
    print_r($title); 
} 
?> 

ответ

0

Проблема заключается в строке:

$html = file_get_html('http://www.tutorvista.com/search/'.$keyword); 

Эта функция внутренне использует file_get_contents(), который не принимает пробелы и нуждаются в URI должен быть закодирован с UrlEncode ().

Попробуйте это:

$html = file_get_html(urlencode('http://www.tutorvista.com/search/'.$keyword)); 

Ref:

http://sourceforge.net/p/simplehtmldom/code/208/tree/trunk/simple_html_dom.php#l76 http://php.net/manual/en/function.file-get-contents.php

Смежные вопросы