Supportnet / Forum / Webseiten/HTML
Wortlisten trennen
Frage
Hallo allerseits,
Habe eine Liste von Vokabeln (Deutsch-Griechisch). Dummerweise sieht diese Liste ungefähr so aus:
[code]Gruppe ; Gruppierung ομάδα ; όμιλος ; συγκρότημα
Entdeckung ανακάλυψη
Rekord ρεκόρ
Verlust απώλεια ; ζημιά ; χάσιμο ; χαμός ; χασούρα
Fehler [/code]
Wollte nun irgendwie versuchen, das Griechische vom Deutschen zu trennen, so dass ich im Endeffekt die deutsche Vokabelliste und die griechische Vokabelliste in eine MySQL-Datenbank speichern kann. Im Quelltext sieht das ganze so aus:
[code]Ehrlichkeit ; Redlichkeit ειλικÏίνεια ; τιμιότητα
Kolloid ; kolloidal κολλοειδÎÏ‚
Walt Whitman Ουώλτ Ουίτμαν [/code]
Also dachte ich mir, man könnte doch per PHP nur die Wörter anzeigen lassen, die ein A-Z enthalten. Er zeigt dann zum Beispiel "Ehrlichkeit" an, macht dann einen Absatz und in der nächsten Zeile das nächste Wort. So hätte ich am Ende im Browser eine lange Liste von den deutschen Vokabeln, die ich dann kopieren könnte...
Aber wie mach ich das mit PHP so, dass er nur das anzeigt, das Buchstaben enthält und keine Sonderzeichen?
Ist ziemlich kompliziert und ich weiß auch nicht, obs überhaupt geht. Hat jemand vielleicht eine andere Idee?
Danke im Vorraus,
Gruß,
Üsch
Antwort 1 von grieche
Zitat:
Aber wie mach ich das mit PHP so, dass er nur das anzeigt, das Buchstaben enthält und keine Sonderzeichen?
Aber wie mach ich das mit PHP so, dass er nur das anzeigt, das Buchstaben enthält und keine Sonderzeichen?
informier dich mal über reguläre ausdrücke.
wobei äß nicht ganz so einfach ißt. äß gibt schließlich in där däutschän sprachä auch sondärzeichän.
Antwort 2 von Supermax
sind die Wort/Begriffspaare nicht ohnehin durch ein eindeutiges Trennzeichen getrennt, z.B. den Tabulator ("\t")?
Dann könntest du jede Zeile einfach folgendermaßen trennen:
Dann könntest du jede Zeile einfach folgendermaßen trennen:
list($deutsch,$griechisch) = explode("\t",$zeile);Antwort 3 von Uesch
Es ist halt jedesmal ein neues <p>Vokabel</p>
Habe hier mal die Liste der Vokablen auf einer Seite: www.goreo.de/vokabel.php
(So wie auf der Seite geht es dann noch sehr viel weiter...)
Ihr könnt ja mal im Quelltext gucken. WIe kann man jetzt die griechischen von den deutschen trennen? Weil das griechische muss ja in eine andere Datenbanktabelle als das deutsche.
Gruß und Dank,
Üsch
Habe hier mal die Liste der Vokablen auf einer Seite: www.goreo.de/vokabel.php
(So wie auf der Seite geht es dann noch sehr viel weiter...)
Ihr könnt ja mal im Quelltext gucken. WIe kann man jetzt die griechischen von den deutschen trennen? Weil das griechische muss ja in eine andere Datenbanktabelle als das deutsche.
Gruß und Dank,
Üsch
Antwort 4 von kicia
Hallo Üsch,
hast Du vielleicht Excel? Du könntest dann erst mit zB. Notepad alle dreifachen Leerzeichen durch ein TAB ersetzen, die <p> und </p> löschen (mit nichts ersetzen), und die liste in Excel importieren. Dort kannst Du einfach eine Spalte kopieren oder löschen.
Ich kann kein PHP, aber mit Hilfe von JavaScript würde ich es so machen:
Erst in einem Editor
- alle <p> ersetzen durch i++; voc = ["
- alle 3xLeerzeichen ersetzen durch ","
- alle </p> ersetzen durch "];
(siehe unten)
dann den folgenden Code schreiben und die Liste hinein kopieren. HTML Datei öffnen und fertige Liste aus der Textbox kopieren.
Die griechische Liste bekommst Du, wenn Du die Zeile
os += voc[0] + "\r\n";
änderst in
os += voc[1] + "\r\n";
(also 1 statt 0)
hast Du vielleicht Excel? Du könntest dann erst mit zB. Notepad alle dreifachen Leerzeichen durch ein TAB ersetzen, die <p> und </p> löschen (mit nichts ersetzen), und die liste in Excel importieren. Dort kannst Du einfach eine Spalte kopieren oder löschen.
Ich kann kein PHP, aber mit Hilfe von JavaScript würde ich es so machen:
Erst in einem Editor
- alle <p> ersetzen durch i++; voc = ["
- alle 3xLeerzeichen ersetzen durch ","
- alle </p> ersetzen durch "];
(siehe unten)
dann den folgenden Code schreiben und die Liste hinein kopieren. HTML Datei öffnen und fertige Liste aus der Textbox kopieren.
Die griechische Liste bekommst Du, wenn Du die Zeile
os += voc[0] + "\r\n";
änderst in
os += voc[1] + "\r\n";
(also 1 statt 0)
<html><head><script>
function main()
{
var voc = new Array();
var i = -1
var os = "";
i++; voc = ["deutsch","griechisch"];
i++; voc = ["deutsch","griechisch"];
i++; voc = ["deutsch","griechisch"];
//...usw...
Anzahl = i;
for(i = 0; i<Anzahl; i++)
{
os += voc[0] + "\r\n";
}
document.getElementById("textbox").value = os;
}
</script></head>
<body onload="main()">
<form>
<textarea id="textbox"></textarea>
</form>
</body></html>Antwort 5 von Uesch
Danke erstmal,
was ich noch vergessen habe zu erwähnen: Es handelt sich um ca. 50000 Vokabeln, das heißt ich kann nichts bei jedem einzeln ändern...
was ich noch vergessen habe zu erwähnen: Es handelt sich um ca. 50000 Vokabeln, das heißt ich kann nichts bei jedem einzeln ändern...
Antwort 6 von kicia
Zitat:
Es handelt sich um ca. 50000 Vokabeln, das heißt ich kann nichts bei jedem einzeln ändern...
Es handelt sich um ca. 50000 Vokabeln, das heißt ich kann nichts bei jedem einzeln ändern...
Das sollte in einem Editor (der so große Dateien öffnen kann) mit "Suchen und Ersetzen" kein Problem darstellen.
zB. in Word:
- Bearbeiten>Ersetzen (oder STRG-H)
- Suchen nach: <p>
- Ersetzen durch: i++; voc = ["
- Alles ersetzen
und so weiter.
Mit "regulären Ausdrücken" (zB in Word) ginge es sogar in einem Durchgang.
TIP: manche Editoren sind beim "Suchen/Ersetzen" erheblich schneller, wenn man sie in den Hintergrund stellt. Also zB einfach ein anderes Fenster auf Vollbild schalten.
Antwort 7 von Uesch
Vielen Dank erstmal,
habe das mit Javascript ausprobiert, habe gemacht wie du gesagt hast. Nun bekomme ich aber, wenn ich die Datei im Browser öffne, eine leere Liste. Einfach ganz viele leere Zeilen, kein deutscher Text.
So sieht das im Quelltext aus:
Was mache ich falsch?
Gruß,
Üsch
habe das mit Javascript ausprobiert, habe gemacht wie du gesagt hast. Nun bekomme ich aber, wenn ich die Datei im Browser öffne, eine leere Liste. Einfach ganz viele leere Zeilen, kein deutscher Text.
So sieht das im Quelltext aus:
<html><head><script>
function main()
{
var voc = new Array();
var i = -1
var os = "";
i++; voc = [" alles","καθετί ; όλα "];
i++; voc = [" ihm ; ihn","αυτόν ; τον "];
i++; voc = [" seine","του "];
i++; voc = [" sich","εαυτό "];
i++; voc = [" pro","ανά "];
Anzahl = i;
for(i = 0; i<Anzahl; i++)
{
os += voc[0] + "\r\n";
}
document.getElementById("textbox").value = os;
}
</script></head>
<body onload="main()">
<form>
<textarea id="textbox"></textarea>
</form>
</body></html>
Was mache ich falsch?
Gruß,
Üsch
Antwort 8 von rfb
so sollte es funktionieren
Stichwort: mehrdimensionales Array!
(auf die Fehler im HTML gehe ich hier nicht ein, da es ja eine interne Anwendung ist)
<html><head><script type="text/javascript">
function main()
{
var voc = new Array();
var j = -1
var os = "";
j++; voc[j] = [" alles","καθετί ; όλα "];
j++; voc[j] = [" ihm ; ihn","αυτόν ; τον "];
j++; voc[j] = [" seine","του "];
j++; voc[j] = [" sich","εαυτό "];
j++; voc[j] = [" pro","ανά "];
var Anzahl = j;
for(j = 0; j<Anzahl; j++) {
os += voc[j][0] + "\r\n";
}
document.getElementById("textbox").value = os;
}
</script></head>
<body onload="main()">
<form>
<textarea id="textbox" rows="20" cols="50"></textarea>
</form>
</body></html>Stichwort: mehrdimensionales Array!
(auf die Fehler im HTML gehe ich hier nicht ein, da es ja eine interne Anwendung ist)
Antwort 9 von Uesch
Vielen Dank,
das hat gefunzt,
jetzt bräuchte ich noch etwas Hilfe beim MySQL.
Möchte die Vokabeln nun in die Tabelle "deutsch" einfügen. Habe dazu einen Array gemacht:
Allerdings speichert er in der Datenbank dann nicht die Wörter, sondern nur "Array".
PS: Das mit den Anführungsstrichen und Kommata sieht zwar nicht gut aus, aber anders hab ich es nicht hinbekommen...
das hat gefunzt,
jetzt bräuchte ich noch etwas Hilfe beim MySQL.
Möchte die Vokabeln nun in die Tabelle "deutsch" einfügen. Habe dazu einen Array gemacht:
$test = array("Abteilung", "Division
", "Komplex
", "Essenz, ", "Kern, ", "Kernel, ", "Quintessenz, ", "Wesentliche
", "Andenken, ", "Erinnerung
", "Meinung, ", "Ansicht, ", "Stellungnahme
", "Glaube, ", "Religion
", "Hoffnung
", "Theorie
", "Wissenschaft
", "Seite
", "Zeitung
", "Sprache
", "Wort
", "Name
", "Schrift
", "Prosa
", "Auszug
", "Handbuch, ", "Reiseführer, ", "Führer
", "Formblatt, ", "Formular
", "Liste
", "Faktur, ", "Nota, ", "Rechnung, ", "Rechnungsstellung, ", "Warenrechnung
", "Fahrkarte, ", "Fahrschein, ", "Karte, ", "Schein, ", "Ticket
", "Quittung
", "Gesetz
", "Testament, ", "Wille
", "Brief, ", "Schreiben
", "Nachrichten
", "Geheimnis
", "Aussage, ", "Behauptung, ", "Erklärung
", "Grund, ", "Ursache
", "Antwort
", "Abkommen, ", "Vertrag, ", "Vereinbarung
", "Porto, ", "Briefmarke
", "Linie, ", "Zeile
", "Zeichen
", "Schriftzeichen, ", "Buchstabe
", "Tonleiter");
if ($button) {
$insert = "INSERT INTO ".
"test (german) ".
"VALUES ('".$test."')";
$eintragensss = mysql_query($insert);
}Allerdings speichert er in der Datenbank dann nicht die Wörter, sondern nur "Array".
PS: Das mit den Anführungsstrichen und Kommata sieht zwar nicht gut aus, aber anders hab ich es nicht hinbekommen...
Antwort 10 von MixMax
es ist ja auch array was du da machst
$insert = "INSERT INTO ".
"test (german) ".
"VALUES ('".join(", ", $test)."')";
$insert = "INSERT INTO ".
"test (german) ".
"VALUES ('".join(", ", $test)."')";
Antwort 11 von Uesch
Danke,
jetzt macht er es aber leider so, dass er alle Vokabeln in eine einzige Zeile speichert und nicht jede Vokabel in eine neue Zeile.
Kann man das irgendwie mit "foreach" bewerkstelligen?
jetzt macht er es aber leider so, dass er alle Vokabeln in eine einzige Zeile speichert und nicht jede Vokabel in eine neue Zeile.
Kann man das irgendwie mit "foreach" bewerkstelligen?
Antwort 12 von Uesch
Kann mir niemand helfen?
Antwort 13 von jjooiinn
wie wäre es, wenn du bei join statt ", " ein anderes Zeichen zum Verbinden nimmst, zB. einen Zeilenumbruch?
Antwort 14 von Uesch
und wie würdest du das machen?
Und würde er dann nicht einfach nach jedem Wort einen Absatz machen und trotzdem alles in einer Tabelle speichern?
Gruß,
Üsch
Und würde er dann nicht einfach nach jedem Wort einen Absatz machen und trotzdem alles in einer Tabelle speichern?
Gruß,
Üsch
Antwort 15 von MixMax
vermutlich meinst du
aber ich frage mich was diese recht unsortiere anhäufung von Wörtern bringen soll und die Setzung der Anführungszeichen ist auch etwas ungewöhnlich gewesen...
if ($button) {
foreach ($test as $Wert) {
$insert = "INSERT INTO test (german) VALUES ('".$Wert."')";
$eintragensss = mysql_query($insert);
}
}aber ich frage mich was diese recht unsortiere anhäufung von Wörtern bringen soll und die Setzung der Anführungszeichen ist auch etwas ungewöhnlich gewesen...
Antwort 16 von Uesch
Genial vielen Dank.
Kann man auch zwei foreache auf einmal machen. Möchte nämlich auch das griechische in die Datenbank einfügen, allerdings so, dass das Deutsche und das Griechische jeweils in einer Zeile stehen.
So gehts nicht:
und so leider auch nicht:
if ($button) {
foreach ($gree as $wart) {
foreach ($was as $Wert) {
$insert = "INSERT INTO test (german, greek) VALUES ('".$Wert."', '".$wart."')";
$eintragensss = mysql_query($insert);
}}
}
Hat jemand eine Idee?
Danke,
Üsch
Kann man auch zwei foreache auf einmal machen. Möchte nämlich auch das griechische in die Datenbank einfügen, allerdings so, dass das Deutsche und das Griechische jeweils in einer Zeile stehen.
So gehts nicht:
if ($button) {
foreach ($gree as $wart and $was as $Wert) {
$insert = "INSERT INTO test (german, greek) VALUES ('".$Wert."', '".$wart."')";
$eintragensss = mysql_query($insert);
}
}
und so leider auch nicht:
if ($button) {
foreach ($gree as $wart) {
foreach ($was as $Wert) {
$insert = "INSERT INTO test (german, greek) VALUES ('".$Wert."', '".$wart."')";
$eintragensss = mysql_query($insert);
}}
}
Hat jemand eine Idee?
Danke,
Üsch
Antwort 17 von Uesch
Kann niemand helfen?
Antwort 18 von Uesch
BITTE!

