2012-03-25 3 views
0

ich auf Worte folgendes zu überprüfen Rechtschreibung bin mit in der Suche eingegeben:„meinst du mit“ google Typ Suche aber auf Zeichenfolge, nicht nur ein Wort

class GDYM { 

public $language = 'en'; 

/** 
* Google Search for PDA (because it's smaller) 
* 
* @var string 
*/ 
private $_url = 'http://google.com/pda?q=%s&hl=%s'; 

/** 
* Use Google to find out if the entered query is correctly spelled 
* 
* @param string $query 
* @return mixed 
*/ 
public function autocorrect($query) 
{ 
    // build url 
    $url = sprintf($this->_url, urlencode($query), $this->language); 

    // store html output 
    $source = file_get_contents($url); 

    // strip other html data 
    preg_match("'<b><i>(.*?)</i></b></a>'si", $source, $match); 

    return (isset($match[0])) ? strip_tags($match[0]) : FALSE; 

} 

} 

dann verwende ich:

$word = $gdym->autocorrect($_POST['word']); 
So

, wenn ich geben sie ‚ipoad‘ es richtig denkt, dass ich meine ‚ipad‘

aber wenn ich ‚ipoad 4g‘ eingeben denkt, dass es das richtig geschrieben ist.

Also ich Figur, explodieren die Zeichenfolge und tun es Wort für Wort?

Aber wenn ich das versuche, funktioniert es einfach nicht - gibt es einen besseren Weg?

hier ist der Code, ich versuche:

$string = $_POST['word']; 

$pieces = explode(" ", $string); 

foreach($pieces as $f){ 

$word = $gdym->autocorrect($f); 

} 

if($word == false) 
{ 
    echo '<span class="response">The word "'. $string .'" is correctly spelled</span>'; 
} 
else 
{ 
    echo '<span class="response">Response from Google autocorrection: ' . $word.'<span class="response">'; 
} 
+2

Definieren Sie "funktioniert nicht". –

+0

Habe ich das Recht: Sie scrappen Google Suchergebnisse, um Ihre eigene automatische Korrektur vorzunehmen? Das ist sehr komisch. Ist das normal? –

+0

Yeah es ist das gleiche wie mit Yahoos Autospell API aber schneller IMHO - ich denke, ha ha –

Antwort

0

In Ihrem foreach-Schleife Sie überschreiben die $word Variable in jeder Iteration. Sie überprüfen also nur, ob das letzte Wort richtig geschrieben wurde. Sie könnten den concat-Operator verwenden, um dies zu lösen.

$res = $gdym->autocorrect($f); 
if ($res === false) { 
    $word = $res; 
    break; 
} else { 
    $word .= " " . $res; 
} 
+0

@ flo, wenn ich dies mit 'ipoad 4g' versuchen, gibt es nichts –

+0

Was meinst du nichts? Fügen Sie einige var_dump() -Aufrufe für $ res hinzu, damit Sie wissen, was google für jedes Teil zurückgibt. – flo

+0

Es ist nicht genau die richtige Antwort, aber es gab mir Gedanken, um das Problem zu beheben, also danke dafür. –

Verwandte Themen