2011-01-29 7 views
1

Я пытаюсь вытащить строку из Google и очистить ее.Невозможно str_replace space

<?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. Ни один из них не работает.

+2

Пожалуйста, скажите мне, что вы серьезно не делаете этого в производственном коде. Преобразование от метров до дюймов не сложно (это, конечно, проще, чем писать код для анализа результатов калькулятора Google). –

+0

Я предполагаю, что он хочет предоставить API для преобразования между любым X и любым Y, а не только метрами в дюймах. Я не знаю, почему он не рассматривал пробел в цифрах как пространство [очень странная причуда], но я думаю, что нашел решение ниже. – Kautiontape

ответ

0

Что касается решения вашей проблемы, лучшим решением является замена всего, что не является числом или пунктуацией, используя 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; 
?> 
+1

Большое вам спасибо. Калькулятор один быстрее. – Pei

0

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

0

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

+0

извините. это не. Я просто испортил форматирование сообщения. – Pei

+0

u проверенная функция триммера? – Harish

+0

Trim только удаляет пробелы на краю строк – Kautiontape

0

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