Невозможно освободить место - PullRequest
1 голос
/ 29 января 2011

Я пытаюсь вытащить числовую строку из Google и очистить ее.

<?php
$q="35 meter in inch";
$query = explode (" ",$q);  
$googleUrl="http://www.google.com/search?q=$query[0]+$query[1]+$query[2]+$query[3]";
$package = file_get_contents("$googleUrl");
$content = preg_replace('/.*<h2[^>]* style="font-size:138%"><b>|<\/b><\/h2>.*/si', "", $package) ;
$number = explode (" ",$content);
$result = str_replace(' ','',$number[3]);
echo $result;   
?>

однако номер, который я получил, имеет пробел. Я попытался заменить его иглами "" или "& nbsp;". Или utf8_encode, декодируйте $ content. Ни один из них не работает.

Ответы [ 4 ]

0 голосов
/ 29 января 2011

Это не пробел, который вы пытаетесь удалить, а "а", который не виден в браузере.Вы также можете проверить эти вещи, используя ваш php-скрипт из командной строки.Вы можете использовать функцию HTML-сущностей, а затем заменить в соответствии с этим

0 голосов
/ 29 января 2011

привет пробел перед <?php пометить его там тоже в вашем коде? тогда это может дать пробел!

0 голосов
/ 29 января 2011

Что касается решения вашей проблемы, лучший ответ - заменить все, что не является числом или пунктуацией, с помощью preg_replace (); Попробуйте это:

<?php
$q="35 meter in inch";
$query = explode (" ",$q);  
$googleUrl="http://www.google.com/search?q=$query[0]+$query[1]+$query[2]+$query[3]";
$package = file_get_contents("$googleUrl");
$content = preg_replace('/.*<h2[^>]* style="font-size:138%"><b>|<\/b><\/h2>.*/si', "", $package) ;
$number = explode (" ",$content);
$result = preg_replace("/[^\d.]/", '', $number[3]);
echo $result;
?>

Но вы, возможно, захотите изучить использование google.com/ig/calculator. Это должно значительно сэкономить на пропускной способности и избавить вас от необходимости тянуть полную страницу результатов Google и заменить ее: http://www.google.com/ig/calculator?hl=en&q=35%20meter%20in%20inch

<?php
$q="35 meter in inch";
$query = explode (" ",$q); 
$googleUrl="http://www.google.com/ig/calculator?q=$query[0]+$query[1]+$query[2]+$query[3]";
$content = file_get_contents("$googleUrl");
preg_match("/rhs:\s\"(.*)\",error/", $content, $number);
$num = explode(" ", $number[1]);
$num = preg_replace("/[^\d.]/", '', $num[0]);
echo $num;
?>
0 голосов
/ 29 января 2011

Вероятно, потому что это не совсем пространство, хотя выглядит так.Вы можете попробовать заменить все \w на регулярное выражение.

...