SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Der CSS-Problemlöser

Der CSS-Problemlöser zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen
Hilfe Community Kalender Heutige Beiträge Suchen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #21  
Alt 30.06.2006, 15:57:08
Andes Andes ist offline
Member
 
Registriert seit: Jun 2006
Ort: Bayern
Alter: 56
Beiträge: 930
AW: Übersetzungs Script

Die Variable die bei preg_replace definiert wird, darf natürlich nicht wie dein Eingabefeld heißen.
Häng doch bei der Ausgabe einfach ein Leerzeichen an ($row->wort.' '). Dann sind die Wörter wieder getrennt.
__________________
Grüße Andes
Mit Zitat antworten
  #22  
Alt 30.06.2006, 16:03:22
theaims theaims ist offline
Anfänger
 
Registriert seit: Jun 2006
Beiträge: 70
AW: Übersetzungs Script

Ne das mit der Augabe ist nicht so toll. Da kann ich ja wieder nur ein leerzeichen machen....

Also ich muss

$wort = preg_replace("/ /", "' and sprache <> '$sprache') or (wort = '", $string);

ändern damit mit das mit den Satzzeichen und dem Leerzeichen klappt?

Geändert von theaims (30.06.2006 um 16:04:26 Uhr)
Mit Zitat antworten
  #23  
Alt 30.06.2006, 20:59:00
Andes Andes ist offline
Member
 
Registriert seit: Jun 2006
Ort: Bayern
Alter: 56
Beiträge: 930
AW: Übersetzungs Script

Du sollst die Variable $wort anders nennen.
Die Satzzeichen musst du vor deiner Abfrage aus den Suchbegriffen entfernen. Sonst findest du ja keine Übereinstimmung.
__________________
Grüße Andes
Mit Zitat antworten
  #24  
Alt 30.06.2006, 21:04:41
theaims theaims ist offline
Anfänger
 
Registriert seit: Jun 2006
Beiträge: 70
AW: Übersetzungs Script

Achja die Variable.

Und wie kann ich die entfernen? mit preg_split?

EDIT:

Ich verstehe das noch nicht so ganz mit den Variablen.

So schreibt er immer noch alles zusammen:

PHP-Code:
$string $_POST['wort'];
$sprache $_POST['sprache'];

$satz preg_replace("/ /""' and sprache <> '$sprache') or (wort = '"$string); 

   
$sql "SELECT wort FROM uebersetzer WHERE sprache = '$sprache' AND id = ANY (SELECT id FROM uebersetzer WHERE (wort = '$satz' AND sprache <> '$sprache'))"

Geändert von theaims (30.06.2006 um 21:09:26 Uhr)
Mit Zitat antworten
  #25  
Alt 30.06.2006, 23:34:00
Andes Andes ist offline
Member
 
Registriert seit: Jun 2006
Ort: Bayern
Alter: 56
Beiträge: 930
AW: Übersetzungs Script

Du kannst auch für preg_replace Arrays erstellen und diese einsetzen.
PHP-Code:
setlocale(LC_CTYPE"de_DE"); //Dies in deinem Script notieren ansonsten werden dir auch alle Umlaute mit entfernt

$entf[0] = "/ /";
$einf[0] = "' and sprache <> '$sprache') or (wort = '"$string);
$entf[1] = "/\W/"//entfernt alle Sonderzeichen aus deinem Satz
$einf[1] = ""//Sonderzeichen durch nichts ersetzen

$satz preg_replace($entf$einf$string); 
Dieser Bereich hat aber nur etwas mit deiner Abfrage zu tun und nicht mit deiner Ausgabe.
Die Datensätze die du Ausgibst musst du natürlich so formatieren wie du sie benötigst. Ansonsten wird ja nur Datensatz für Datensatz ausgegeben. Und in diesen ist ja keine Satzformatierung enthalten. Bsp. Leerzeichen

Frage ich eine Tabelle ab, die nur Dezimalwerte enthält und gebe diese nicht Zeile für Zeile aus. Ergibt die Ausgabe nur Zahlensalat mit dem keiner was anfangen kann.

Bsp. 2 Datensätze gefunden
PHP-Code:
for($a=0$a<$row$a++)
{
    echo  
mysql_result($sql$a"feld1");
}

Ausgabe:
1.253.45

for($a=0$a<$row$a++)
{
    echo  
mysql_result($sql$a"feld1")."<br>";
}

Ausgabe:
1.25
3.45 
Falls wir mit der Ausgabe an einander vorbei reden. Poste doch dein jetziges Script und schreib mal dazu wie die Ausgabe dann aussehen soll.

Ich hab aber mal ne andere Frage. Wenn du ganze Sätze so übersetzt, kommt doch in der Ausgabe kein vernünftiger Satz bei raus? Die Datensätze werden doch einfach ohne Sortierung ausgegeben. Auch, wenn du eine Sortierung angibst entspricht die ja nicht deinem eingegebenen Satz. Wie bewältigst du dann eine annähernd richtige Übersetzung?
__________________
Grüße Andes
Mit Zitat antworten
  #26  
Alt 01.07.2006, 00:12:17
theaims theaims ist offline
Anfänger
 
Registriert seit: Jun 2006
Beiträge: 70
AW: Übersetzungs Script

Also ich glaube wir reden da ein wenig vorbei wie muss ich das denn formatieren?
Ich möchte das so haben das wenn oben ganze Sätze stehen die auch unten in ganzen Sätzen wieder raukommen. Und halt das er Satzeichen gesondert erkennt.
Das war es eigentlich schon. Was kann man denn da noch machen?

Mein Script:

PHP-Code:
<?php
$verbindung 
mysql_connect ("localhost","root""") or die ("keine Verbindung möglich. Benutzername oder Passwort sind falsch");
           
mysql_select_db("uebersetzer") or die ("Die Datenbank existiert nicht.");
?>
    <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
    Text:   <textarea name="wort" ><? if(isset($_POST['wort'])){
            echo($_POST['wort']); } ?></textarea>
    Sprache:<select name="sprache" >
            <option  value='de'  >Englisch - Deutsch</option>
            <option  value='en'  >Deutsch - Englisch</option>
            </select>
    <input type="submit" name="submit" value="Los" />
    </form>    
<?php
$string 
$_POST['wort'];
$sprache $_POST['sprache'];
$satz preg_replace($entf$einf$string);  
$wort preg_replace("/ /""' and sprache <> '$sprache') or (wort = '"$string); 

setlocale(LC_CTYPE"de_DE"); //Dies in deinem Script notieren ansonsten werden dir auch alle Umlaute mit entfernt

$entf[0] = "/ /";
$einf[0] = "' and sprache <> '$sprache') or (wort = '"$string);
$entf[1] = "/\W/"//entfernt alle Sonderzeichen aus deinem Satz
$einf[1] = ""//Sonderzeichen durch nichts ersetzen

$satz preg_replace($entf$einf$string);  

   
$sql "SELECT wort FROM uebersetzer WHERE sprache = '$sprache' AND id = ANY (SELECT id FROM uebersetzer WHERE (wort = '$wort' AND sprache <> '$sprache'))"
    
$query mysql_query($sql) or die(mysql_error());
if(
mysql_num_rows($query) > 0) {   
        while(
$row mysql_fetch_object($query))   { 
        echo 
$row->wort;
        }
       }
Für diese Zeile gibt er mir einen Fehler:

PHP-Code:
$einf[0] = "' and sprache <> '$sprache') or (wort = '"$string); 
Parse error: parse error, unexpected ',' in.......

Und zu deiner anderen Frage. Also google macht ja auch nur eine 1 zu 1 übersetzung oder sehe ich das falsch? Naja sortiert sollte das garnicht werden oder bekommt man das so einfach hin? Ich denke mal nicht.....

Geändert von theaims (01.07.2006 um 00:21:54 Uhr)
Mit Zitat antworten
  #27  
Alt 01.07.2006, 01:00:55
Andes Andes ist offline
Member
 
Registriert seit: Jun 2006
Ort: Bayern
Alter: 56
Beiträge: 930
AW: Übersetzungs Script

Es ist halt schon etwas spät.
PHP-Code:
$einf[0] = "' and sprache <> '$sprache') or (wort = '"
Bei deinem Script muss aber schon viel eher eine Notiz über fehlende Variablen angezeigt werden.

PHP-Code:
$string $_POST['wort']; 
$sprache $_POST['sprache']; 
$satz preg_replace($entf$einf$string);   //Hier ist $entf und $einf noch nicht definiert, die Zeile kannst du löschen
$wort preg_replace("/ /""' and sprache <> '$sprache') or (wort = '"$string);  //dies kannst du komplett aus deinem Script löschen, wenn du die Variante mit den Variablen benutzt

setlocale(LC_CTYPE"de_DE"); //Dies in deinem Script notieren ansonsten werden dir auch alle Umlaute mit entfernt 

$entf[0] = "/ /"
$einf[0] = "' and sprache <> '$sprache') or (wort = '"
$entf[1] = "/\W/"//entfernt alle Sonderzeichen aus deinem Satz 
$einf[1] = ""//Sonderzeichen durch nichts ersetzen 

$satz preg_replace($entf$einf$string); 
Mhm, hab mir ja noch nicht viele Seiten von Google übersetzen lassen. Aber ich denke mal schon, dass die etwas Sinn gemäß übersetzen und nicht eins zu eins. Kann mich aber auch täuschen.

Bei deiner Ausgabe fällt mir jetzt erst mal nur auf die Schnelle ein. Das du den eingegeben Satz (String) in ein Array wandelst. Die Treffer in der Datenbank schreibst du ebenfalls in ein Array und vergibst als Key das gesuchte Wort. Welches du halt mit auslesen müsstest. Dann liest du das Array der Eingabe in einer Schleife aus und fragst im Ausgabe-Array nach ob ein Key mit diesem Wort existiert. Wenn ja gibst du den Wert des Ausgabe-Arrays aus und, wenn nicht den Wert des Eingabe-Arrays.

Das könnte dann so aussehen.

Eingabe = „Hallo an alle in dieser Welt“

Eingabe-Array:

Array {
[0] = Hallo
[1] = an
[2] = alle
[3] = in
[4] = dieser
[5] = Welt
}

Ausgabe-Array:

Array {
[Hallo] = Hello
[Welt] = World
}

Abfrage:

Ist der Key Hallo in Ausgabe-Array enthalten, dann gib seinen Wert „Hello“ aus.
Ist er nicht enthalten, dann gib Hallo aus.

Damit erhältst du dann diesen Satz.

Hello an alle in dieser World

Allerdings würdest du mit einer DB in der jede Sprache ihre eigene Tabelle hat und die Wörter mit einer id verknüpft sind komfortablere Abfragen gestalten können.
__________________
Grüße Andes

Geändert von Andes (01.07.2006 um 01:18:47 Uhr)
Mit Zitat antworten
  #28  
Alt 01.07.2006, 11:48:14
theaims theaims ist offline
Anfänger
 
Registriert seit: Jun 2006
Beiträge: 70
AW: Übersetzungs Script

Mit der Augabe werde ich sehen wenn das ganze Script erstmal läuft sprich ganze Sätze übersetzt werden können. Das tut es im momment immer noch nicht. Ab zwei Wörter übersetzt er garnichts mehr. Es kommt kein echo mehr. Noch nicht mal Helloi....

Könnte man es nicht in eine Schleife setzen, das er so lange sucht bis er alles hat?

Hier ist der aktuelle Code. Mit einem Wort geht alles.

PHP-Code:
$string $_POST['wort'];
$sprache $_POST['sprache'];

setlocale(LC_CTYPE"de_DE"); //Dies in deinem Script notieren ansonsten werden dir auch alle Umlaute mit entfernt

$entf[0] = "/ /"
$einf[0] = "' and sprache <> '$sprache') or (wort = '"
$entf[1] = "/\W/"//entfernt alle Sonderzeichen aus deinem Satz 
$einf[1] = ""//Sonderzeichen durch nichts ersetzen 

$satz preg_replace($entf$einf$string);  

   
$sql "SELECT wort FROM uebersetzer WHERE sprache = '$sprache' AND id = ANY (SELECT id FROM uebersetzer WHERE (wort = '$wort' AND sprache <> '$sprache'))"
    
$query mysql_query($sql) or die(mysql_error());
if(
mysql_num_rows($query) > 0) {   
        while(
$row mysql_fetch_object($query))   { 
        echo 
$row->wort;
        
}
       } 
Mit Zitat antworten
  #29  
Alt 01.07.2006, 13:20:47
Andes Andes ist offline
Member
 
Registriert seit: Jun 2006
Ort: Bayern
Alter: 56
Beiträge: 930
AW: Übersetzungs Script

Das könntest du schon, bloß kann es auf die Performanz gehen. Auch, wenn er alle Wörter findet hast du dann immer noch das Problem, dass du mit dieser Abfrage nicht beide Wörter (original und übersetzt) ausgelesen bekommst. Die benötigst du aber um die Übersetzung in derselben Reihenfolge wie den gesuchten Satz ausgeben zu können.

Mit drei Tabellen fährst du um einiges besser. Ob du nun 3 Datensätze in einer oder einen in 3 Tabellen anlegst ist doch egal.

Ein Mal vor den Kopf klatsch. Er kann ja auch nichts finden. Durch preg_replace wird ja jedes Wort aneinander gereiht übergeben. Statt sie in die Bedingung zu wandeln. Ist auch klar warum. "\W" entfernt alle nicht alphanumerischen Zeichen und dazu gehört auch das Leerzeichen. Dazu kommt noch, dass die Sonderzeichen erst entfernt werden, wenn die Bedingung schon erstellt wurde. Die jetzige Anweisung macht folgendes.


Satz: Hallo, Test.

beim ersten Durchlauf sieht das noch so aus.

Hallo,' and sprache <> 'de') or (wort = 'Test.' and sprache <> 'de') or (wort = '

nach dem zweiten Durchlauf kommt dieses bei raus

HalloandsparachedeorwortTestandsprachedeorwort

Tausch mal den Bereich
PHP-Code:
$entf[0] = "/ /";  
$einf[0] = "' and sprache <> '$sprache') or (wort = '";  
$entf[1] = "/\W/"//entfernt alle Sonderzeichen aus deinem Satz  
$einf[1] = ""//Sonderzeichen durch nichts ersetzen 
mit dem hier

PHP-Code:
$entf[0] = "/\W/";                                        //entfernt alle Sonderzeichen aus deinem Satz, auch Leerzeichen  
    
$einf[0] = " ";                                            //setzt für alle entfernten Sonderzeichen ein Leerzeichen ein
    
$entf[1] = "/( ){2,}/";                                    //ersetzt alle doppelten Leerzeichen
    
$einf[1] = " ";                                            //durch ein Leerzeichen
    
$entf[2] = "/( )$/";                                    //ersetzt ein Leerzeichen am Ende
    
$einf[2] = "";                                            //durch nichts
    
$entf[3] = "/ /";                                          //ersetzt alle Leerzeichen
    
$einf[3] = "' and sprache <> '$sprache') or (wort = '"//mit diesem 
In deinem Select muss dann auch $satz statt $wort eingesetzt werden.
Damit müsste es funktionieren.
__________________
Grüße Andes

Geändert von Andes (01.07.2006 um 13:26:09 Uhr)
Mit Zitat antworten
  #30  
Alt 05.07.2006, 21:45:28
theaims theaims ist offline
Anfänger
 
Registriert seit: Jun 2006
Beiträge: 70
AW: Übersetzungs Script

Es kommt immer noch zusammen geschrieben raus.

Und kann ich so viele Leerzeichen zwischen den Wörter machen wie ich will?


PHP-Code:
<?php
$verbindung 
mysql_connect ("localhost","root""") or die ("keine Verbindung möglich. Benutzername oder Passwort sind falsch");
           
mysql_select_db("uebersetzer") or die ("Die Datenbank existiert nicht.");
?>
    <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
    Text:   <textarea name="wort" ><? if(isset($_POST['wort'])){
            echo($_POST['wort']); } ?></textarea>
    Sprache:<select name="sprache" >
            <option  value='de'  >Englisch - Deutsch</option>
            <option  value='en'  >Deutsch - Englisch</option>
            </select>
    <input type="submit" name="submit" value="Los" />
    </form>    
<?php
$string 
$_POST['wort'];
$sprache $_POST['sprache'];

setlocale(LC_CTYPE"de_DE"); //Dies in deinem Script notieren ansonsten werden dir auch alle Umlaute mit entfernt

$entf[0] = "/\W/";                                        //entfernt alle Sonderzeichen aus deinem Satz, auch Leerzeichen  
    
$einf[0] = " ";                                            //setzt für alle entfernten Sonderzeichen ein Leerzeichen ein
    
$entf[1] = "/( ){2,}/";                                    //ersetzt alle doppelten Leerzeichen
    
$einf[1] = " ";                                            //durch ein Leerzeichen
    
$entf[2] = "/( )$/";                                    //ersetzt ein Leerzeichen am Ende
    
$einf[2] = "";                                            //durch nichts
    
$entf[3] = "/ /";                                          //ersetzt alle Leerzeichen
    
$einf[3] = "' and sprache <> '$sprache') or (wort = '"//mit diesem  

$satz preg_replace($entf$einf$string);  

   
$sql "SELECT wort FROM uebersetzer WHERE sprache = '$sprache' AND id = ANY (SELECT id FROM uebersetzer WHERE (wort = '$satz' AND sprache <> '$sprache'))"
    
$query mysql_query($sql) or die(mysql_error());
if(
mysql_num_rows($query) > 0) {   
        while(
$row mysql_fetch_object($query))   { 
        echo 
$row->wort;
        
}
       }
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Fehler in Script das Inhalt einer .txt Datei (HTML Sourcecode) in Datei schreiben sol RookieXL2 PHP für Fortgeschrittene und Experten 2 08.06.2007 23:58:33
Daten aus SQL datenbank nach php script ausführung weg Kaldoran PHP Grundlagen 3 23.06.2006 22:23:01
Strings per PHP an ein anderes Script übergeben ? quirrly PHP Grundlagen 18 23.12.2004 15:20:39
Wichtig: Upload Script auf FTP-Server und dessen Sicherheit? Supernova PHP für Fortgeschrittene und Experten 5 21.07.2004 11:41:52
Suche "Länder" Script.. Nomad PHP für Fortgeschrittene und Experten 15 25.02.2003 23:00:25


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:03:25 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt