Zurück tutorials.de > Programming > PHP

 
 
Hallo und herzlich willkommen! Tutorials.de ist eine Hilfe-Community mit dem Motto User helfen Usern. Als Gast verfügst Du über Schreibrechte in unseren Foren und Blogs. Du kannst dich aber gerne auch kostenlos registrieren und Teil unserer Gemeinschaft werden! Viel Spaß & Erfolg bei der Vermehrung deines Wissens :-)

Themen: 242.975 | Beiträge: 1.352.293 | Mitglieder: 169.418 (Stand 28.01.10) | Fragen zur Nutzung von Tutorials.de? Nutzungsregeln | Kontaktformular | Impressum

Jubiläums-Countdown 23.02 23.03 23.04 23.05 23.06 23.07 23.08 23.09


4 kostenlose Bücher bei unserer Buch-Verschenkaktion 03/2010
  AntwortAntworten (über Gastzugang)    
  AntwortAntworten (über Gastzugang)    
 
Themen-Optionen Ansicht
Alt 05.07.06, 10:13   #1 (permalink)
Mitglied Silber
 
Registriert seit: Jan 2004
Ort: Wien
Beiträge: 76
Renommee-Modifikator: 13
MaxMara hat eine blütenweiße Weste

Vertipper in DB suchen

Hallo!

Ich bin auf der Suche nach einem Weg wie man nach Schreibfehlern in einer DB (oder Text,...) suchen kann.
ein Beispiel:

Suchbegriff: Häuser
Ergebnis: Höuser, Häusre, Hüuer,....

Hat vielleicht jemand eine Idee wie man das umsetzen könnte?

Vielen Dank!

Grüße
Christian
  MaxMara ist offline  
 
Alt 05.07.06, 22:19   #2 (permalink)
ich wisch hier durch
 
Registriert seit: Feb 2005
Ort: hinterm Mond gleich Links
Beiträge: 5.496
Renommee-Modifikator: 60
Dr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein Zweiter

AW: Vertipper in DB suchen

Hallo!

Meiner Meinung nach dürfte es unmöglich sein.
Du müsstest eine Referenz festlegen (alternativ dynamisch generieren lassen), die alle nur erdenklichen Kombinationen durchläuft.
Was ist aber wenn z.b. äährseur (anstatt Häuser) im Text steht?
Genauso gut könnte äährseur aber ja z.b. auch für "Auto" im Text stehen.
Du weisst also nicht was für ein Wort im Text steht und auch nicht wofür es steht.
Demnach könnte also jede erdenkliche Kombination auf jedes erdenkliche Wort passen.
Du würdes also in einer unendlichen Suche landen.

Statt dessen solltest Du lieber darauf achten, ob irgend jemand sich nicht an die Rechtschreibung gehalten hat und es ggf. korrigieren.
Nicht ohne Grund gibt es hier im Forum den Punkt "Rechtschreibung" in der Netiquette.

Gruss Dr Dau
__________________
Schri-Schra-Schrödi *g*
mehrspaltiges/zeiliges Seitenlayout mit DIV's und CSS
Dinge, die mit Tabellen besser klappen als mit CSS
Ausgabe von Datum/Zeit unabhängig von der Server Zeitzone [php]
Meine Links zum Thema Linux (Last update: 21.06.2009)
Zitat:
Kein Busen ist so flach wie das Niveau dieser Party!
----
Alte Weisheit: wer uns in den Arsch kriecht wird beschissen!
----
Ich habe 3 Kinder und kein Geld!
Warum kann ich nicht keine Kinder haben und 3 Geld?! (Homer Jay Simpson)
  Dr Dau ist offline  
 
Alt 06.07.06, 20:36   #3 (permalink)
Mitglied Silber
 
Registriert seit: Jan 2004
Ort: Wien
Beiträge: 76
Renommee-Modifikator: 13
MaxMara hat eine blütenweiße Weste

AW: Vertipper in DB suchen

Danke für deine Antwort!
Ich hab mir schon gedacht, dass es nicht leicht wird.
Hab heute (in der Arbeit ) ein wenig get und folgendes gefunden:
vertipp.de - Schnäppchen durch Tippfehler bei eBay finden!
Das ist genau das, was ich suche - nur wie machen die das?

Danke fürs Mitgrübeln

#Edit: Hab grad mitbekommen, dass diese Seite Geld durchs eBay-Klicken reinbringt. Soll keine Werbung für die Seite sein, sondern mir geht es lediglich um die Technik dahinter.

Geändert von MaxMara (06.07.06 um 20:41 Uhr).
  MaxMara ist offline  
 
Alt 06.07.06, 21:03   #4 (permalink)
Mitglied Bronze
 
Benutzerbild von nikwithk  
 
Registriert seit: Apr 2005
Beiträge: 45
Renommee-Modifikator: 10
nikwithk hat eine blütenweiße Weste

AW: Vertipper in DB suchen

Ich denke dass die aus der orginalen Eingabe mögliche andere Buchstabenkombinationen generieren und hängen diese in den SearchString rein --> Beispiel Adidas
Code:
http://search.ebay.de/(didas,aidas,addas,adias,adids,adida,daidas,aiddas,addias,adiads,adidsa,sdidas,aadidas,asidas,afidas,addidas,addas,adisas,adifas,adiddas,adidss,adidaas,adidaa,adidad,adidass
  nikwithk ist offline  
 
Alt 06.07.06, 21:09   #5 (permalink)
ɐɯıǝɹ
 
Benutzerbild von Matthias Reitinger tutorials.de Premium-User 
 
Registriert seit: Dec 2001
Ort: Bayern
Beiträge: 5.250
Renommee-Modifikator: 54
Matthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes Ansehen

AW: Vertipper in DB suchen

Hallo,

hier scheint es sich um einen recht simplen Algorithmus zu handeln. Zuerst wird jeweils ein Buchstabe weggelassen. Dann werden jeweils zwei aufeinander folgende Zeichen ausgetauscht (Buchstabendreher). Schlussendlich werden noch alle Möglichkeiten durchprobiert, die dadurch entstehen, dass man jeweils einen Buchstaben durch einen auf der Tastatur daneben liegenden austauscht.

edit: Ganz übersehen: auch versehentlich gedoppelte Buchstaben werden in die Vertipperliste aufgenommen.

Beispielimplementation:
PHP-Code:
<?php

function vertipper($wort) {
    
$len strlen($wort);
    
$liste = array();

    
// 1. Weggelassene oder doppelte Buchstaben
    
for ($i 0$i $len; ++$i) {
        
$liste[] = substr($wort0$i) .
            
substr($wort$i+1);
        
$liste[] = substr($wort0$i+1) .
            
substr($wort$i);
    }

    
// 2. Buchstabendreher
    
for ($i 0$i $len-1; ++$i) {
        
$liste[] = substr($wort0$i) .
            
$wort{$i+1} . $wort{$i} .
            
substr($wort$i+2);
    }

    
// 3. Auf der Tastatur nahe liegende Buchstaben
    
$tastaturzeilen = array(
        
'1234567890ß',
        
'qwertzuiopü',
        
'asdfghjklöä',
        
'yxcvbnm',
    );

    for (
$i 0$i $len; ++$i) {
        
$buchst $wort{$i};
        
$daneben = array();
        foreach (
$tastaturzeilen as $zeile) {
            if ((
$pos strpos($zeile$buchst)) !== false) {
                if (
$pos->= 0) {
                    
$daneben[] = $zeile{$pos-1};
                }
                if (
$pos+strlen($zeile)) {
                    
$daneben[] = $zeile{$pos+1};
                }
            }
        }
        foreach (
$daneben as $ersatz) {
            
$vertipper $wort;
            
$vertipper{$i} = $ersatz;
            
$liste[] = $vertipper;
        }
    }

    return 
array_values(array_unique($liste));
}

print_r(vertipper('tutorials'));

?>
Grüße,
Matthias
__________________
„Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
“For every complex problem, there is an answer that is short, simple and wrong.”
“Pessimism is safe, but optimism is a lot faster!”


Aktuelles Coding Quiz: #13 - Zahlengewurschtel
  Matthias Reitinger ist offline  
 
Alt 06.07.06, 21:10   #6 (permalink)
ich wisch hier durch
 
Registriert seit: Feb 2005
Ort: hinterm Mond gleich Links
Beiträge: 5.496
Renommee-Modifikator: 60
Dr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein Zweiter

AW: Vertipper in DB suchen

Habe ich nicht ausprobiert..... die sollen ja kein Geld durch uns einnehmen.
Ich vermute allerdings dass sie lediglich die "typischen" Vertipper in einer Datenbank hinterlegt haben.
Denkbar währe z.b. "Heuser" für "Häuser"..... oder Buchstabenverdreher wie z.b. "Häusre".
Mein Beispiel "äährseur" wird also wohl kaum gefunden werden wenn ich nach "Häuser" suche.

Ähnlich macht es Google ja auch..... nur halt umgekehrt.
Wenn ich nach "Häusre" suche, fragt mich Google "Meinten Sie: Häuser".

[edit]
@Matthias, das währe natürlich auch eine Möglichkeit..... ich würde es mal als "logischen Fehler" bezeichen, also z.b. die von Dir angesprochenen Nachbartasten oder fehlende Buchstaben.
Solche Dinge passieren ja recht schnell mal.
[/edit]
__________________
Schri-Schra-Schrödi *g*
mehrspaltiges/zeiliges Seitenlayout mit DIV's und CSS
Dinge, die mit Tabellen besser klappen als mit CSS
Ausgabe von Datum/Zeit unabhängig von der Server Zeitzone [php]
Meine Links zum Thema Linux (Last update: 21.06.2009)
Zitat:
Kein Busen ist so flach wie das Niveau dieser Party!
----
Alte Weisheit: wer uns in den Arsch kriecht wird beschissen!
----
Ich habe 3 Kinder und kein Geld!
Warum kann ich nicht keine Kinder haben und 3 Geld?! (Homer Jay Simpson)

Geändert von Dr Dau (06.07.06 um 21:16 Uhr).
  Dr Dau ist offline  
 
Alt 06.07.06, 21:39   #7 (permalink)
 
Benutzerbild von Christian Fein  
 
Registriert seit: Mar 2001
Ort: München
Beiträge: 4.847
Renommee-Modifikator: 38
Christian Fein ist ein sehr geschätzer Mensch

AW: Vertipper in DB suchen

Mann macht ihr das alle kompliziert

MySQL 4.0 Referenzhandbuch :: 7.3.2 Zeichenketten-Funktionen
Zitat:
SOUNDEX(zeichenkette)

Gibt eine Soundex-Zeichenkette von zeichenkette zurück. Zwei Zeichenketten, die fast gleich klingen, sollten identische Soundex-Zeichenketten haben. Eine Standard-Soundex-Zeichenkette ist 4 Zeichen lang, aber die SOUNDEX()-Funktion gibt eine beliebig lange Zeichenkette zurück. Sie können SUBSTRING() auf das Ergebnis anwenden, um eine Standard-Soundex-Zeichenkette zu erhalten. Alle nicht alphanumerischen Zeichen in der angegebenen Zeichenkette werden ignoriert. Alle internationalen alphabetischen Zeichen ausserhalb des Wertebereichs A bis Z werden als Vokale behandelt:
Sprich "select name from bloedetabelle where SOUNDEX(name) = SOUNDEX("Heuser")

SELECT *
FROM meine_tabelle
WHERE soundex( username ) = soundex( "Christian Vein" )

findet Christian Fein
__________________
Erst wenn der letzte Programmierer eingesperrt...
...und die letzte Idee patentiert ist, werdet ihr merken, dass Anwälte nicht programmieren können.
-------------------
chris: hey Tom hast du eigentlich ne Freundin
jdar: ich bin tutorials.de Mod!
  Christian Fein ist offline  
 
Alt 06.07.06, 21:47   #8 (permalink)
Mitglied Silber
 
Registriert seit: Jan 2004
Ort: Wien
Beiträge: 76
Renommee-Modifikator: 13
MaxMara hat eine blütenweiße Weste

AW: Vertipper in DB suchen

Zitat:
Zitat von Matthias Reitinger
Hallo,

hier scheint es sich um einen recht simplen Algorithmus zu handeln. Zuerst wird jeweils ein Buchstabe weggelassen. Dann werden jeweils zwei aufeinander folgende Zeichen ausgetauscht (Buchstabendreher). Schlussendlich werden noch alle Möglichkeiten durchprobiert, die dadurch entstehen, dass man jeweils einen Buchstaben durch einen auf der Tastatur daneben liegenden austauscht.

edit: Ganz übersehen: auch versehentlich gedoppelte Buchstaben werden in die Vertipperliste aufgenommen.
[...]
Danke Matthias, genau das hab ich gesucht.

Zitat:
Zitat von Christian Fein
Sprich "select name from bloedetabelle where SOUNDEX(name) = SOUNDEX("Heuser")
Funktioniert auch gut für mein Problem, aber mir gefallen die Vertipper besser, die man "reproduzieren" kann
  MaxMara ist offline  
 
Alt 06.07.06, 22:39   #9 (permalink)
ɐɯıǝɹ
 
Benutzerbild von Matthias Reitinger tutorials.de Premium-User 
 
Registriert seit: Dec 2001
Ort: Bayern
Beiträge: 5.250
Renommee-Modifikator: 54
Matthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes Ansehen

AW: Vertipper in DB suchen

Hallo,

Zitat:
Zitat von Christian Fein
Mann macht ihr das alle kompliziert
SOUNDEX() versagt nur leider, wenn es um Vertipper geht, die phonetisch unähnliche Wörter erzeugen.

Lustiges Detail am Rande: SOUNDEX('spears') == SOUNDEX('superzicke')

Grüße,
Matthias
__________________
„Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
“For every complex problem, there is an answer that is short, simple and wrong.”
“Pessimism is safe, but optimism is a lot faster!”


Aktuelles Coding Quiz: #13 - Zahlengewurschtel
  Matthias Reitinger ist offline  
 
Alt 07.07.06, 00:19   #10 (permalink)
ich wisch hier durch
 
Registriert seit: Feb 2005
Ort: hinterm Mond gleich Links
Beiträge: 5.496
Renommee-Modifikator: 60
Dr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein Zweiter

AW: Vertipper in DB suchen

@Matthias, perfekt ist Dein Script aber dann doch nicht.
Was ist wenn man einen Buchstaben zu weit oben oder unten getippt hat?
Also beim beim z.b. "t" könnte man ja z.b. auch das "g" oder evtl. das "f" getroffen haben.
__________________
Schri-Schra-Schrödi *g*
mehrspaltiges/zeiliges Seitenlayout mit DIV's und CSS
Dinge, die mit Tabellen besser klappen als mit CSS
Ausgabe von Datum/Zeit unabhängig von der Server Zeitzone [php]
Meine Links zum Thema Linux (Last update: 21.06.2009)
Zitat:
Kein Busen ist so flach wie das Niveau dieser Party!
----
Alte Weisheit: wer uns in den Arsch kriecht wird beschissen!
----
Ich habe 3 Kinder und kein Geld!
Warum kann ich nicht keine Kinder haben und 3 Geld?! (Homer Jay Simpson)
  Dr Dau ist offline  
 
Alt 07.07.06, 00:31   #11 (permalink)
ɐɯıǝɹ
 
Benutzerbild von Matthias Reitinger tutorials.de Premium-User 
 
Registriert seit: Dec 2001
Ort: Bayern
Beiträge: 5.250
Renommee-Modifikator: 54
Matthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes AnsehenMatthias Reitinger genießt hohes Ansehen

AW: Vertipper in DB suchen

Hallo,

Zitat:
Zitat von Dr Dau
@Matthias, perfekt ist Dein Script aber dann doch nicht.
Hab ich auch nie behauptet Ich hab mit meinem Skript nur die Funktionalität der verlinkten Seite imitiert, nicht mehr und nicht weniger.

Schon allein die Tatsache, dass bei einem längeren Wort durchaus auch mal zwei Vertipper passieren können, bringt diese Implementierung in's straucheln.

Grüße,
Matthias
__________________
„Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
“For every complex problem, there is an answer that is short, simple and wrong.”
“Pessimism is safe, but optimism is a lot faster!”


Aktuelles Coding Quiz: #13 - Zahlengewurschtel
  Matthias Reitinger ist offline  
 
Alt 07.07.06, 01:11   #12 (permalink)
ich wisch hier durch
 
Registriert seit: Feb 2005
Ort: hinterm Mond gleich Links
Beiträge: 5.496
Renommee-Modifikator: 60
Dr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein ZweiterDr Dau ist berühmt wie kein Zweiter

AW: Vertipper in DB suchen

@Matthias, ich wollte ja nur drauf aufmerksam machen..... ich weiss ja schliesslich nicht wie weit Du das Script getestet hast.
__________________
Schri-Schra-Schrödi *g*
mehrspaltiges/zeiliges Seitenlayout mit DIV's und CSS
Dinge, die mit Tabellen besser klappen als mit CSS
Ausgabe von Datum/Zeit unabhängig von der Server Zeitzone [php]
Meine Links zum Thema Linux (Last update: 21.06.2009)
Zitat:
Kein Busen ist so flach wie das Niveau dieser Party!
----
Alte Weisheit: wer uns in den Arsch kriecht wird beschissen!
----
Ich habe 3 Kinder und kein Geld!
Warum kann ich nicht keine Kinder haben und 3 Geld?! (Homer Jay Simpson)
  Dr Dau ist offline  
 
 
 
Lesezeichen:


Themen-Optionen
Ansicht
Ähnliche Themen
 
Thema Autor Forum Antworten Letzter Beitrag
Tabelle in einer db suchen - wenn nicht vorhanden dann CREATE Flextone PHP 18 28.04.06 00:44
Teile eines Namens in der Db suchen Grunge PHP 2 11.03.06 14:28
Nach einem bestimmten Eintrag in DB suchen Eistee Relationale Datenbanksysteme 2 20.05.05 13:59
nächste freie id in DB suchen kesnw PHP 7 31.03.04 12:41
in Db suchen aba richtig SchwarzerWolf Relationale Datenbanksysteme 3 26.04.02 19:01
» Tools
 
tutorials.de-Tools tutorial.de-Suchfeld tutorial.de-Widget tutorial.de-RSS-Feed tutorial.de-Banner
» Neue Links
 
Hits: 138
»
JHT's Planetary...
(Cinema 4D-Objekte)
Hits: 265
»
Tageslicht ohne GI
(Cinema 4D-Tutorials)
Hits: 153
»
Puzzle
(Cinema 4D-Tutorials)
Hits: 104
»
Lacreme
(Cinema 4D-Tutorials)
Hits: 195
»
Liquid Light
(Cinema 4D-Tutorials)
» Aktuelle Umfrage
 
Bist du mit der Geschwindigkeit der Tutorials.de-Website zufrieden?
Ja, es putzt mir glatt den Staub vom Bildschirm! - 80,41%
156 Stimmen
Nein, ich denke da muss noch nachgebessert werden... - 19,59%
38 Stimmen
Stimmen gesamt: 194
Du darfst bei dieser Umfrage nicht abstimmen.

 

Alle Zeitangaben in WEZ +1. Es ist jetzt 06:01 Uhr.


Powered by vBulletin® Version 3.8.5 (Deutsch) & vBadvanced CMPS v.3.2.0
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.5.0 RC2 ©2010, Crawlability, Inc.
Alle Rechte vorbehalten ©2000 - 2010 tutorials.de
Design by Mark, CSS by Maik & Sven Mintel
Seite generiert in 0,30365 Sekunden mit 26 queries