2014-01-24 2 views
0

im делать некоторые данные соскабливания ... в основном я получаю некоторую веб-страницу, используя curl, извлекаю данные и проверяю мою базу данных, чтобы увидеть, существуют ли они в моем db.скрытое пространство в середине очищенного текста

поэтому я искал Beijing Guoan (Chn) в исходном коде веб-страницы, и я не смог его найти, но он был там, и я мог видеть его в браузере.

$result = phpQuery::newDocument(file_get_contents('www.site.com/page'), 'text/html'); 

    foreach($result->find('td.table-participant-teams') as $t) 
    { 
    list($host , $guest) = explode(' - ' , pq($t)->text()); 

    echo $host.' == Beijing Guoan (Chn) ==> '; 
    echo $host == 'Beijing Guoan (Chn)' ? ' found it ' : ' false '; 
    } 

результат:

Beijing Guoan (Chn) == Beijing Guoan (Chn) ==> false 

я сделал strlen($host) и я нашел $host был 20 charchter в то время как Beijing Guoan (Chn) имеет 19 .... в основном есть скрытый charachter в $host

, поэтому я добавлено

for($i = 0 ; $i < strlen($host) ; $i++) 
{ 
    echo $i.' - '.$host[$i]; 
    echo '<br />'; 
} 

и i Получено

0 - B 
1 - e 
2 - i 
3 - j 
4 - i 
5 - n 
6 - g 
7 - 
8 - G 
9 - u 
10 - o 
11 - a 
12 - n 
13 - 
14 - 
15 - (
16 - C 
17 - h 
18 - n 
19 -) 

, как вы можете видеть в 13,14, я получил 2 пробела, но когда я распечатываю $ host, у меня есть только 1! и вот что cuzing все неприятности


так whay есть дополнительное пространство в моем $ хозяина, но он не будет показывать, когда я распечатать его на экране, и как я могу избавиться от него?

обратите внимание, что я не хочу, чтобы просто удалить, что дополнительное пространство от этой конкретной строки, может быть и другие случаями с различным полукоксом длиной, Iwant решения, которое работает на всех из них

+0

Это следовало ожидать. При рендеринге HTML разрывы строк ('\ n'), последовательные пробелы и т. Д. Все игнорируются и не отображаются. Ваш браузер в основном ** LIES ** для вас, как часть процесса рендеринга. –

+0

Попробуйте удалить все пробелы внутри вашего кода, чтобы узнать, не вызывает ли лишний пробел. – mdesdev

+0

Можно удалить все пробелы (и, возможно, преобразовать все символы в нижние) только для сравнения? – JonnyS

ответ

1

HTML оказывает множественным последовательное пространство как единое целое. Если вы просмотрите источник, вы увидите фактические данные.

Чтобы заменить несколько раз подряд пробельные Вы можете использовать следующие

echo preg_replace('/ +/', ' ', 'he llo  test'); 
+1

Или используйте '/ \ s + /', чтобы также отображать вкладки и символы новой строки в символ пробела – grebneke

+0

, спасибо, что это мой последний вариант, это не очень вероятно, но могут быть строки с фактическим последовательным пространством – max

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