Nur 1. Satz auslesen

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

  • Nur 1. Satz auslesen

    Hallöle,

    Wie kann ich aus einem Mysql-eintrag mit php nur z.B. den ersten Satz oder die ersten 20 Buchstaben auslesen?

    Das ganze ist für ein News-skript bei dem man auf der startseite nur den anfang einer News lesen kann.

    Bsp.:

    Heute verübten 20 Maskierte Männer der Bill-Gates-Terrororganisation einen verheerenden Anschlag auf den Hauptsitz des feindlichen Linux-Hauptquartiers. [Weiter]

    Ich bin leider nicht sehr begabt in mysql daher kann es sein dass die Antwort ganz einfach ist ich nur nicht drauf komme...

    MFG

    Floh1111

  • #2
    SUBSTRING()

    Kommentar


    • #3
      Thx für die schnelle Antwort.

      <?php
      $text = "Freude schöner Götterfunken,
      Tochter aus Elysium,
      Wir betreten Feuertrunken,
      Himmlische, dein Heiligtum!
      Deine Zauber binden wieder,
      Was die Mode streng geteilt.
      Alle Menschen werden Brüder,
      Wo dein sanfter Flügel weilt.";

      $sub = substr($text,0,10);

      echo $sub;
      ?>

      das liest jetzt die 1. zehn Buchstaben aus. Wie kann ich aber z.B. nur bis zum 1. Komma (,) auslesen?

      MFG
      Floh1111

      Kommentar


      • #4
        Beschäftige dich mal mit dem Kapitel über String-Funktionen im MySQL-Manual.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          ich seh schon das wird wieder nen grübel wochenende

          Kommentar


          • #6
            SUBSTRING() ist durchaus eine SQL-Funktion. s. wahsagas hinweis.

            Kommentar


            • #7
              Das kann aber diffizil werden. Intuitiv würde man ja mit MySQL-Funktionen den Text beim ersten Punkt, Ausrufe- oder Fragezeichen abschneiden. Aber eine Idee später fällt einem sowas ein:

              "Im Alter von 29 Jahren ertaubte der Komponist (!) Beethoven."
              "Hm, lass mich mal überlegen ..."
              "Die ??? ist eine beliebte Hörspielserie."
              "Der 3. Oktober ist ein Feiertag."

              Es gibt garantiert noch viele weitere solche Stolpersteine!
              Wenn die Texte von dir stammen, dann markiere das Ende der Teaser lieber mit einer Trennmarke (z.B. "<!-- break -->") und lass MySQL da abschneiden.
              Oder noch besser: Spendiere deinem Datenbankschema eine eigene Spalte für Teaser.
              Wenn du die Texte von irgendwo her beziehst und nicht manuell nachbearbeiten möchtest, versuche die Datenstruktur der Quelle zu nutzen.

              Kommentar


              • #8
                Danke für den Hinweis.

                "Wenn die Texte von dir stammen, dann markiere das Ende der Teaser lieber mit einer Trennmarke (z.B. "<!-- break -->") und lass MySQL da abschneiden."

                Ja aber wie lass ich mysql denn da, also bei einem bestimmten Zeichen abschneiden?

                MFG
                Floh1111

                Kommentar


                • #9
                  hast duem wahsaga seinen hinweis befolgt?

                  Kommentar


                  • #10
                    ja ich bin zurzeit dabei...

                    Kommentar


                    • #11
                      <?php

                      $news = "Heute verübten 20 Maskierte Männer der Bill-Gates-Terrororganisation einen verheerenden Anschlag auf den Hauptsitz des feindlichen Linux-Hauptquartiers.< Um ca. 20.00 Uhr fingen sie an die fensterscheiben mit granaten zu zerschlagen";

                      $find = strpos($news, '<');


                      $substr = substr($news,0,$find);

                      echo $substr;

                      ?>

                      $substr liefert nun dass was ich eigendlich haben möchte allerdings beschleicht mich das Gefühl als sei das noch nicht so das Wahre?!
                      Außerdem ist das ja keine mysql abfrage mehr.

                      Kommentar


                      • #12
                        Ja, dass es keine SQL-Abfrage ist mal eindeutig deine Schuld! Wir haben mehrfach aufs MySQL-Manual verwiesen. Außerdem habe ich von der Funktion SUBSTRING() geredet, nicht von substr().

                        Kommentar


                        • #13
                          SELECT SUBSTRING_INDEX('Heute verübten 20 Maskierte Männer der Bill-Gates-Terrororganisation einen verheerenden Anschlag auf den Hauptsitz des feindlichen Linux-Hauptquartiers.< Um ca. 20.00 Uhr fingen sie an die fensterscheiben mit granaten zu zerschlagen', '<', 1);

                          right?

                          Es funst jedenfalls.

                          MFG
                          Floh1111

                          Kommentar


                          • #14
                            Hier ist nochmal der php-code:

                            $mysqleingabe = @mysql_query("SELECT SUBSTRING_INDEX(Inhalt, '<', 1) AS Teaser FROM News WHERE ID = 1") OR die("Es konnten keine Daten aus der MySQL-Datenbank ausgelesen werden.".mysql_error() );

                            mysql_num_rows($mysqleingabe) OR die("Keine Daten Vorhanden");

                            while ($ausgabe = mysql_fetch_assoc($mysqleingabe)) {
                            echo $ausgabe['Teaser'] ." [Weiterlesen]";

                            MFG
                            Floh1111

                            Kommentar


                            • #15
                              Schön, aber eine Anmerkung sei gestattet: < als Trennzeichen ist eine denkbar ungünstige Wahl. Entweder nimmst du ein Zeichen, was in natürlichem Text (möglichst) niemals vorkommt oder einen längeren String.

                              Wenn du nicht gerade in Unicode speicherst, kommt eigentlich nur ein längerer Trenner in Frage. Oben hatte ich ja schon ein Beispiel genannt, was den Vorteil hat, dass man es in der Volltextausgabe nicht einmal herausfischen muss, weil es nur ein HTML-Kommentar ist.

                              Kommentar

                              Lädt...
                              X