1

我尝试从谷歌中提取数字字符串并清理它。

<?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;   
?>

但是,我得到的数字有一个空格。我试图用针“”或“ ”替换它。或者utf8_encode,解码$content。它们都不起作用。

4

4 回答 4

0

可能是因为它不是一个真正的空间,即使它看起来像它。您可以尝试用\w正则表达式替换所有内容。

于 2011-01-29T06:17:37.400 回答
0

嗨,<?php在您的代码中标记它之前的空间吗?那么这可能是给空间检查!

于 2011-01-29T06:17:56.433 回答
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;
?>
于 2011-01-29T08:01:10.980 回答
0

这不是您要删除的空间,它是“à”,在浏览器中不可见。您还可以通过命令行使用 php 脚本来检查这些内容。您可以使用 html 实体功能,然后根据该功能进行替换

于 2011-01-29T08:39:58.640 回答