online 1
gast (50)

/ Forum / Webseiten/HTML

Webseiten/HTMLWebseiten/HTML

Fragevon Uesch vom 15.09.2019, 23:21 Options

Lösung

Wortlisten trennen

Hallo allerseits,

Habe eine Liste von Vokabeln (Deutsch-Griechisch). Dummerweise sieht diese Liste ungefähr so aus:

Gruppe ; Gruppierung 	 ομάδα ; όμιλος ; συγκρότημα 	
 Entdeckung 	 ανακάλυψη 	
 Rekord 	 ρεκόρ 	
 Verlust 	 απώλεια ; ζημιά ; χάσιμο ; χαμός ; χασούρα 	
 Fehler 


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:
Ehrlichkeit ; Redlichkeit 	 ειλικρίνεια ; τιμιότητα 	
 Kolloid ; kolloidal 	 κολλοειδές 	
 Walt Whitman 	 Ουώλτ Ουίτμαν 	


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 schreiben

Antwort 1 von grieche vom 16.09.2019, 11:26 Options

Zitat:
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 vom 16.09.2019, 11:35 Options

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:
list($deutsch,$griechisch) = explode("\t",$zeile);

Antwort 3 von Uesch vom 16.09.2019, 17:37 Options

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

Antwort 4 von kicia vom 17.09.2019, 07:02 Options

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)

<html><head><script>
function main()
{
	var voc = new Array();
	var i = -1
	var os = "";
	i++; voc[i] = ["deutsch","griechisch"];
	i++; voc[i] = ["deutsch","griechisch"];
	i++; voc[i] = ["deutsch","griechisch"];
	//...usw...

	Anzahl = i;
	for(i = 0; i<Anzahl; i++)
	{
		os += voc[i][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 vom 17.09.2019, 18:29 Options

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...

Antwort 6 von kicia vom 18.09.2019, 07:16 Options

Zitat:
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 vom 22.09.2019, 00:01 Options

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:

<html><head><script>

function main()

{

   var voc = new Array();

   var i = -1

   var os = "";

i++; voc = [" alles","&#x03BA;&#x03B1;&#x03B8;&#x03B5;&#x03C4;&#x03AF; ; &#x03CC;&#x03BB;&#x03B1;  "];

i++; voc = [" ihm ; ihn","&#x03B1;&#x03C5;&#x03C4;&#x03CC;&#x03BD; ; &#x03C4;&#x03BF;&#x03BD;  "];

i++; voc = [" seine","&#x03C4;&#x03BF;&#x03C5;  "];

i++; voc = [" sich","&#x03B5;&#x03B1;&#x03C5;&#x03C4;&#x03CC;  "];

i++; voc = [" pro","&#x03B1;&#x03BD;&#x03AC;  "];

   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 vom 22.09.2019, 12:40 OptionsLösung

Lösung
so sollte es funktionieren

<html><head><script type="text/javascript">
function main()
{
var voc = new Array();
var j = -1
var os = "";
j++; voc[j] = [" alles","&#x03BA;&#x03B1;&#x03B8;&#x03B5;&#x03C4;&#x03AF; ; &#x03CC;&#x03BB;&#x03B1; "];
j++; voc[j] = [" ihm ; ihn","&#x03B1;&#x03C5;&#x03C4;&#x03CC;&#x03BD; ; &#x03C4;&#x03BF;&#x03BD; "];
j++; voc[j] = [" seine","&#x03C4;&#x03BF;&#x03C5; "];
j++; voc[j] = [" sich","&#x03B5;&#x03B1;&#x03C5;&#x03C4;&#x03CC; "];
j++; voc[j] = [" pro","&#x03B1;&#x03BD;&#x03AC; "];
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 vom 22.09.2019, 14:30 Options

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:

$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&uuml;hrer, ", "F&uuml;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&auml;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 vom 22.09.2019, 16:24 Options

es ist ja auch array was du da machst


$insert = "INSERT INTO ".
"test (german) ".
"VALUES ('".join(", ", $test)."')";

Antwort 11 von Uesch vom 22.09.2019, 23:57 Options

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?

Antwort 12 von Uesch vom 25.09.2019, 15:38 Options

Kann mir niemand helfen?

Antwort 13 von jjooiinn vom 25.09.2019, 16:12 Options

wie wäre es, wenn du bei join statt ", " ein anderes Zeichen zum Verbinden nimmst, zB. einen Zeilenumbruch?

Antwort 14 von Uesch vom 26.09.2019, 18:57 Options

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

Antwort 15 von MixMax vom 26.09.2019, 19:08 Options

vermutlich meinst du

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 vom 28.09.2019, 18:49 Options

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:

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 vom 29.09.2019, 20:31 Options

Kann niemand helfen?

Antwort 18 von Uesch vom 30.09.2019, 19:25 Options

BITTE!

Ähnliche Themen

Kann man seine LAN-Verbindung übers Internet trennen?
Büchner  11.12.2007 - 211 Hits - 4 Antworten

Zellen trennen
Uwe98  15.04.2008 - 120 Hits - 2 Antworten

Internetverbindung nach 1 Stunde automatisch trennen lassen?
Herr_Cooles  21.04.2008 - 59 Hits - 9 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 09:21:55 2026