Ankündigung

Einklappen
Keine Ankündigung bisher.

Einfache Abfrage von JSON Daten

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Vielen Dank mermshaus! So eine detaillierte Hilfe bekommt man nur noch ganz selten. Nur der Bereich Translations funktioniert bei mir leider nicht, obwohl ich den Code übernommen habe

    PHP-Code:
        $ret['translations'] = array();
        
    preg_match_all('/{{Ü\|([a-z]+)\|(.+?)}}/'$wikitext$tmpPREG_SET_ORDER);
        foreach (
    $tmp as $match) {
            
    $ret['translations'][trim($match[1])] = trim($match[2]);
        }
        
    preg_match_all('/{{Üxx\|([a-z]+)\|(?:.+?)\|(.+?)}}/'$wikitext$tmpPREG_SET_ORDER);
        foreach (
    $tmp as $match) {
            
    $ret['translations'][trim($match[1])] = trim($match[2]);

    echo 
    "Englisch: ".$ret['translations'][1]."";

        } 

    Kommentar


    • #17
      Da fehlt bei den regulären Ausdrücken mit Nicht-ASCII-Zeichen in meinem Post in #15 jeweils der u-Pattern-Modifikator. Kann ich offensichtlich nicht mehr reineditieren.

      Müsste richtiger so aussehen, auch wenn das an der Stelle technisch gesehen auch zufällig ohne Modifikator einwandfrei funktioniert.

      PHP-Code:
          $ret['translations'] = array();
          
      preg_match_all('/{{Ü\|([a-z]+)\|(.+?)}}/u'$wikitext$tmpPREG_SET_ORDER);
          foreach (
      $tmp as $match) {
              
      $ret['translations'][trim($match[1])] = trim($match[2]);
          }
          
      preg_match_all('/{{Üxx\|([a-z]+)\|(?:.+?)\|(.+?)}}/u'$wikitext$tmpPREG_SET_ORDER);
          foreach (
      $tmp as $match) {
              
      $ret['translations'][trim($match[1])] = trim($match[2]);
          }
          
      /** @todo
           * {{zh-tw}}: [1] {{Üxx|zh|...|...}}
           * {{zh-cn}}: [1] {{Üxx|zh|...|...}} <-- zweite Zeile überschreibt erste
           */ 
      Zumindest dann, wenn der Quellcode in UTF-8 kodiert ist, was deiner nicht zu sein scheint.

      Das solltest du in deinem Editor korrekt einstellen.

      Alternativ oder zusätzlich kannst du die beiden "Ü"s ansonsten auch durch "\xC3\x9C" ersetzen und die Stringbegrenzer für das Pattern von einfachen auf doppelte Anführungszeichen ändern (zum Beispiel: "/{{\xC3\x9C\|([a-z]+)\|(.+?)}}/u"). Ist inhaltlich das Gleiche, nur eine ASCII-kompatible Darstellung des UTF-8-Zeichens.

      Kommentar


      • #18
        Vielen lieben Dank! Nun habe ich noch eine letzte Frage. Woher wusstest du, dass z.B. die Variable für Charakteristische Wortkombinationen = wordCombinations lautet?

        Auf http://de.wiktionary.org/w/api.php?a...al&format=json wird die Variable gar nicht angezeigt.

        Es gibt nämlich noch Silbentrennung, Anwendungsbeispiele, Begriffsursprung sowie Fälle für das Wort Karneval, die ich gerne auslesen würde. Aber wie denn, wenn man die Variable dazu nicht kennt?!

        Silbentrennung:
        Kar|ne|val, keine Mehrzahl

        Anwendungsbeispiele:
        1) „Denn einmal nur im Jahr ist Karneval, ist Karneval am Rhein.“

        Begriffsursprung:
        als Lehnwort von dem italienischen Substantiv carnevale im 17. Jahrhundert übernommen, und dies von mittellateinisch carnelevarium „Vorfastenzeit“ zu lateinisch carnem levare „das Fleisch wegnehmen“, da zu früherer Zeit ein Fleischverbot zur Fastenzeit herrschte, weitere Herkunft dunkel

        Fälle:
        Nominativ: Einzahl der Karneval; Mehrzahl
        Genitiv: Einzahl des Karnevals; Mehrzahl
        Dativ: Einzahl dem Karneval; Mehrzahl
        Akkusativ: Einzahl den Karneval; Mehrzahl

        Kommentar


        • #19
          Zitat von levans Beitrag anzeigen
          Woher wusstest du, dass z.B. die Variable für Charakteristische Wortkombinationen = wordCombinations lautet?
          Weiß ich nicht mehr. Vielleicht habe ich mir die Übersetzung irgendwie nachgeschlagen, vielleicht habe ich sie mir auch einfach ausgedacht. Den Bezeichner habe ich ja selbst vergeben. Der ist frei wählbar. Kannst du auch "susan" nennen.

          Es gibt nämlich noch Silbentrennung, Anwendungsbeispiele, Begriffsursprung sowie Fälle für das Wort Karneval, die ich gerne auslesen würde. Aber wie denn, wenn man die Variable dazu nicht kennt?!
          Du verstehst – ganz neutral gesagt – nicht, was in dem Code, den ich dir gepostet habe, passiert.

          Mal ein einfaches Beispiel. Du hast einen String

          "A: Hallo. | B: Welt. | C: Tschüs.".

          Jetzt willst du daraus die Informaton haben, was "B" sagt. Da suchst du nun einfach nach "B:" und nach "|" und liest den Inhalt dazwischen aus.

          Das klappt gut, solange der String nicht so aussieht

          "A: Hallo. ; B: Welt. ; C: Tschüs."

          oder so

          "A: Hallo. | B: Mein Lieblingszeichen ist |, wie steht es bei dir C? | C: Tschüs.".

          So arbeitet auch mein Code. Es wird zum Beispiel nach dem Teilstring "{{Wortbildungen}}" gesucht und alles bis zum nächsten "{" ausgelesen.

          Ganz „stumpfe“ Stringverarbeitung. Irgendwelche (ja auch gar nicht vorhandenen) „Variablen“ im Eingabestring werden da nicht genutzt.

          Kommentar


          • #20
            Oh erst jetzt habe ich das ganze Prinzip verstanden.

            So habe ich es auch gleich geschafft Silbentrennung, Anwendungsbeispiele und Begriffsursprung auszulesen, auch wenn nicht komplett.

            Ausgabe durch den Code:

            PHP-Code:
                preg_match('/{{Worttrennung}}([^{]+){/'$wikitext$tmp);
                
            preg_match_all('/\[\[([^[]+)\]\]/'$tmp[1]);
                
            $ret['wortt'] = trim($tmp[1]);

                echo 
            "<h1>Worttrennung</h1> "$ret['wortt'].""
            JSON:
            Code:
            {{Worttrennung}}\n:Kar\u00b7ne\u00b7val, {{Pl.1}} Kar\u00b7ne\u00b7va\u00b7le, {{Pl.2}} Kar\u00b7ne\u00b7vals\n\n
            Und das wird auf meiner Seite ausgegeben:
            :Kar·ne·val,
            Um an die anderen beiden Wörter zu kommen, muss {{Pl.1}} und {{Pl.2}} in die Ausgabevariable?




            Und Herkunft wird leider auch nur halb ausgegeben.

            PHP-Code:
                preg_match('/{{Herkunft}}([^{]+){/'$wikitext$tmp);
                
            preg_match_all('/\[\[([^[]+)\]\]/'$tmp[1]);
                
            $ret['herkunft'] = trim($tmp[1]);

            echo 
            "<h1>Herkunft</h1> "$ret['herkunft'].""
            JSON:
            Code:
            {{Herkunft}}\n:als Lehnwort von dem italienischen Substantiv ''[[carnevale]]'' im 17. Jahrhundert \u00fcbernommen, und dies von mittellateinisch ''{{\u00dc|la|carnelevarium}}'' \u201eVorfastenzeit\u201c zu lateinisch ''[[carnis|carnem]] [[:la:carnis|(la)]] {{\u00dc|la|levare}}'' \u201edas [[Fleisch]] [[wegnehmen]]\u201c, da zu fr\u00fcherer Zeit ein Fleischverbot zur Fastenzeit herrschte, weitere Herkunft dunkel <ref>{{Lit-Duden: Herkunftsw\u00f6rterbuch|A=4}}, Seite 392.</ref><ref>{{Lit-Kluge: Etymologisches W\u00f6rterbuch|A=24}} Seite 472.</ref>
            Ausgabe auf meiner Seite:
            :als Lehnwort von dem italienischen Substantiv ''[[carnevale]]'' im 17. Jahrhundert übernommen, und dies von mittellateinisch ''

            Kommentar


            • #21
              Um an die anderen beiden Wörter zu kommen, muss {{Pl.1}} und {{Pl.2}} in die Ausgabevariable?
              Du musst eben entsprechende Logik schreiben, um darauf zu reagieren, dass dort diese Strings den Inhalt noch mal unterteilen.

              Und Herkunft wird leider auch nur halb ausgegeben.
              Auch in dem Bereich taucht eben "{{" auf, ohne den Bereich zu begrenzen.

              Das ist das Problem von hier:

              "A: Hallo. | B: Mein Lieblingszeichen ist |, wie steht es bei dir C? | C: Tschüs.".
              Da muss man sich einen ausgefeilteren Ansatz überlegen.

              Ich sage ja:

              Ansatz heißt: Renn nicht mit Fehlern zu mir. […]

              Ich würde zudem in jedem Fall noch mal suchen, ob Wiktionary nicht eine geeignetere Schnittstelle zum Abruf derartiger Informationen anbietet oder ob es nicht bereits stabile Lösungen gibt, die das Parsen übernehmen.
              Ich habe derzeit kein Interesse daran, dir das einfach so alles zu machen.

              Kommentar


              • #22
                Nein, leider gibt es keine fertigen Wikitionary-Parser, zumindest keine die so funktionieren wie ich es gerne würde.

                Ich habe dir eine private Nachricht geschrieben zwecks Auftrag. Ich würde mich freuen, wenn du den Auftrag annimmst. Denn ich finde leider keinen Ansatz wie ich die Klammern überspringe und den fehlenden Text auslese.

                Kommentar

                Lädt...
                X