2011-01-29 2 views
1

私はGoogleから数字の文字列を引き出し、それを掃除しようとします。スペースをstr_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 = str_replace(' ','',$number[3]); 
echo $result; 
?> 

しかし、私には空きがあります。 ニードル ""または "& nbsp;"で置き換えようとしました。 "またはutf8_encode、$ contentをデコードします。いずれも動作しません。

+2

これを真にプロダクションコードでやっているわけではないことを教えてください。メーターからインチへの変換は困難ではありません(Googleの電卓の結果を解析するコードを書くよりも確かに簡単です) –

+0

メートルからインチだけでなく、XとYの間で変換するAPIを提供したいと考えています。なぜスペースとしての数の隙間を扱っていないのか分かりませんが、私は以下の解決策を見つけたと思います。 – 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

こんにちは、<?phpの前にスペースを入れておいてください。スペースがそれをチェックしている可能性があります!

+0

申し訳ありません。そうではありません。私はちょうどポストをフォーマットしてしまった。 – Pei

+0

あなたはトリム機能を試しましたか? – Harish

+0

トリムは文字列の端にある空白を削除するだけです – Kautiontape

0

これは、削除しようとしているスペースはありませんが、そうではないこと、「A」でありますブラウザに表示されます。また、コマンドラインでPHPスクリプトを使ってこれらのことを確認することもできます。あなたはhtmlエンティティ関数を使用してそれに応じて置換することができます

関連する問題