String abschneiden

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

  • String abschneiden

    Hi Leute!
    Ich schreib grad bei ner Page den News Bereich und will in der Startseite die News anzeigen, aber ohne jeglichen Scrollbalken im iframe (geht net anders) ich will aber auch nicht, dass er einfach abschneidet und der Text unten weitergeht (scrolling=no).
    Hab hier im Forum ne Fkt von my|DCF gefunden die nach einer bestimmten anzahl Zeichen aber nicht mitten im Wort abschneidet. Genau das was ich brauch..
    Hier mal die Fkt:
    PHP-Code:
    function str_cut ($string$chars) {
      
    $j 0;
      while (!
    $shortstring) {
        if ( (
    $chars $j) >= strlen ($string) ) {
          
    $shortstring $string;
        } else {
          
    $strrpos strrpos (substr ($string0$chars $j), " ");
          if (
    $strrpos)
            
    $shortstring substr ($string0$strrpos);
        }
        
    $j++;
      }
      return 
    $shortstring;

    Und hier meine Bedingung:
    PHP-Code:
    if (substr_count($news[Newstext],"\n") > 15) {
        
    $news[Newstext] = str_cut($news[Newstext],50);
        
    $news[Newstext] = $news[Newstext]."\n <a href='news_all.php?id=$news[id]' target='main'>News lesen</a>";

    DAS Forum für PHP & ähnliches

  • #2
    Ja.... Toll.... und???


    Was willst du uns jetzt damit sagen???

    Wenn du wissen willst ob die FKT funzt teste sie doch einfach!
    Die Musikreview Seite

    hi, i'm a signature virus. copy me into your signature to help me spread.

    Kommentar


    • #3
      Ich weiß nich genau aber gehört das hier nich in Codeschnipsel ? Und äähh.. Wordwrap(); hätte es sicher auch getan...
      [font=verdana] '][' .... düdeldüdel dü

      Gruss Socket
      -----
      Nein, ich programmiere kein Clan-Script für Dich, nein, auch nicht wenn Deine Schwester gut aussieht!
      [color=darkblue]
      Socket Funktionen[/color]
      [/font]

      Kommentar


      • #4
        und wenn die daten aus der mysql-db kommen, ist SUBSTRING_INDEX() dein freund
        Kissolino.com

        Kommentar


        • #5
          Die Funktion funktioniert, nur leider nicht ganz so wie ich will... Die str_cut funktion hab ich hier aus den Codeschnipseln. Mein Problem nochmal ganz ausführlich:
          Nach dem ersten Umbruch schneidet mir die Funktion einfach ab egal wieviele Zeichen bei der str_cut Fkt eingestellt sind.
          @socket_shock:
          Nein wordwrap tuts nicht, weil er soll nicht mitten im Wort abschneiden. Deswegen auch str_cut...
          EDIT:

          @Wurzel:
          Dein substring_index scheint mir irgendwie recht passend zu sein. Hab ich des richtig verstanden:
          substring_index("Der Text/Variable", "Zeichen/Zeichenkette nach dem gesucht werden soll", "Nach dem wievielten vorkommen des zeichens/der Zeichenkette abgeschnitten werden soll");
          Würd mich über Antwort freun.

          Zuletzt geändert von Michi1g; 06.01.2004, 11:45.
          DAS Forum für PHP & ähnliches

          Kommentar


          • #6
            Habs jetzt mal folgendermaßen probiert:
            PHP-Code:
            $query ="SELECT User,Topic,substring_index(Newstext,'\n',5) FROM `news` WHERE 1 AND `type` = 'News4all' ORDER BY `Date` DESC  LIMIT 0,1" 
            Stimmt die Query so? Weil irgendwie spuckt der mir nix aus wenn ich dann per mysql_fetch_array des komplette Array les und dann Newstext ausgeben will. User und Topic funktionieren allerdings einwandfrei!
            Kann mir jemand helfen wie man substring_index richtig benutzt?
            DAS Forum für PHP & ähnliches

            Kommentar


            • #7
              Original geschrieben von Michi1g
              Stimmt die Query so?
              wirst du uns sicher gleich selber mitteilen, nachdem du sie per c&p in phpmyadmin ausprobiert hast!
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                @michi1g

                die syntax hast du ja schon verstanden ... probiers mal mit nem leerzeichen
                oder einem anderen trenne als '\n' und wie wahsaga schon anmerkte, im phpmyadmin.
                Kissolino.com

                Kommentar


                • #9
                  Original geschrieben von wahsaga
                  wirst du uns sicher gleich selber mitteilen, nachdem du sie per c&p in phpmyadmin ausprobiert hast!
                  Hab ich davor auch schon gemacht und da funktionierts ja, nur wenn ichs dann ausgeben will, was ja sinn und zweck von dem ding is, dann gibt er mir nur nen leeren string aus, was ich eigentlich nicht bezwecken will.

                  Muss ich den String dann vielleicht anders auslesen? Ich machs so:
                  PHP-Code:
                  $result mysql_db_query($dbName,$query,$connect);
                  $news mysql_fetch_array($result);
                  print (
                  "$news[Newstext]"); 
                  Wenn ich hier die nicht gekürzten Strings haben will is des kein Problem, da funktionierts einwandfrei mit $news[Topic] bzw $news[User].
                  DAS Forum für PHP & ähnliches

                  Kommentar


                  • #10
                    Original geschrieben von Michi1g
                    $news = mysql_fetch_array($result);
                    print ("$news[Newstext]");

                    Wenn ich hier die nicht gekürzten Strings haben will is des kein Problem, da funktionierts einwandfrei mit $news[Topic] bzw $news[User].
                    das ist ja auch kein wunder!

                    deine query mit
                    SELECT User,Topic,substring_index(Newstext,'\n',5)
                    liefert nun mal keine ergebnisspalte mit dem namen Newstext zurück, also gibt es auch kein $news['Newstext']!

                    statt der spalte Newstext liest du ja nur einen teil des inhaltes aus, und zwar mit der funktion substring_index - diese erzeugt aber nicht von selber einen spaltennamen in der ergebnismenge!

                    also entweder greifst du nicht mit einem assoziativen index auf deinen ergebnisdatensatz zu - oder du vergibst direkt mysql-seitig einen alias für das ergebnis der funktion.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Dankeschön, habs mir sowieso anders überlegt weil ich ja nicht nachprüfen kann ob der String jetzt gekürzt is oder net und dementsprechend auch nicht weiß ob ich jetzt dahinter noch nen Link zum "mehr lesen" machen muss oder nich.
                      Dann wären wir wieder am Anfang: Ich brauch ne Funktion die folgendes können soll:
                      - einen String nach "\n" oder einer anderen Zeichenkette dursuchen
                      - die Anzahl der "\n" sich merkt und nach einer bestimmten Anzahl den String abschneidet und "...<a href="...">mehr</a> dahintersetzt

                      Hab mir folgendes überlegt:
                      PHP-Code:
                      function str_cut ($String,$Zeichenkette,$Anzahl) {
                      $Wert $String;
                      $i 0;
                      while (
                      $Wert strstr($Wert,$Zeichenkette AND $i <= $Anzahl) {
                      $i $i +1;
                      }
                      $LengthWert strlen($Wert);
                      $newstring substr($String,0,-$LengthWert);
                      return 
                      $newstring;

                      Des mit dem Link is dann ja auch kein Problem mehr. Aber leider funktioniert die Funktion nicht. Er gibt mir einfach nur nichts aus. Er bringt aber auch keinen Fehler, d.h. ich muss irgendwo nen Denkfehler drin haben.
                      Hier nochmal schnell die Funktionsreferenzen:
                      -substr() http://www.selfphp.info/funktionsref...nen/substr.php
                      -strstr() http://www.selfphp.info/funktionsref...nen/strstr.php

                      Danke im vorraus

                      EDIT:

                      Habs jetzt soweit hingekriegt dass er mir die while Schleife zumindest einmal durchläuft, hatte vergessen bei strstr die 2. Klammer zu setzen. aber er durchläuft sie anscheinend nur einmal.

                      Zuletzt geändert von Michi1g; 06.01.2004, 16:11.
                      DAS Forum für PHP & ähnliches

                      Kommentar


                      • #12
                        Original geschrieben von Michi1g
                        Habs jetzt soweit hingekriegt dass er mir die while Schleife zumindest einmal durchläuft, hatte vergessen bei strstr die 2. Klammer zu setzen. aber er durchläuft sie anscheinend nur einmal.
                        woher willst du das wissen - das einzige, was deine while-schleife macht, ist $i hochzählen!
                        da du $i aber nachher nicht mehr verwendest, gescheige denn mal ausgibst, würde ich sagen, du merkst gar nicht, wie oft deine schleife durchlaufen wird ...
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          Original geschrieben von wahsaga
                          woher willst du das wissen - das einzige, was deine while-schleife macht, ist $i hochzählen!
                          da du $i aber nachher nicht mehr verwendest, gescheige denn mal ausgibst, würde ich sagen, du merkst gar nicht, wie oft deine schleife durchlaufen wird ...
                          Dann is des wohl mein Denkfehler... Vorschlag wie ichs sonst machen könnte? Ich habs aber eigentlich schon gemerkt, weil ich seh ja wie lang mein $newstring danach ist. und dementsprechend kann ich ja sehen wie oft er sie durchlaufen hat. Hab als Zeichenkette \n benutzt und da sieht man wunderschön, dass er nach dem ersten \n, welches ich später dann in ein <br> umgewandelt hab aufhört. Meiner meinung nach lässt sich daraus schließen dass er die schleife einmal durchgemacht hat, weil $wert dann ja den Wert $String - $newstring haben muss.
                          Naja, jedenfalls weiß ich nicht wie ichs sonst machen könnte. Sitz da jetzt schon ungefähr 10 Stunden davor und komm einfach nicht dahinter, d.h. wenn mir jemand sagen könnte wie meine Schleife aussehen muss wäre ich demjenigen sehr verbunden.
                          EDIT:

                          wieso zählt der nur $i hoch? Ich dachte bei ner while schleife überprüft er jedes mal ob die Bedinung $wert = strstr(...) und führt sie daher ja auch aus, oder täusch ich mich da. Wenn der nämlich jedes mal die bedingung ausführt dann enthält $Wert die Zeichenkette irgendwann nicht mehr und dann wär die Bedingung doch false, oder?
                          Naja, ich mach erst seit 4 Tagen php von daher vertrau ich da auf euren Erfahrungsschatz...

                          Zuletzt geändert von Michi1g; 06.01.2004, 18:06.
                          DAS Forum für PHP & ähnliches

                          Kommentar


                          • #14
                            Hab die Funktion jetzt umgeschrieben:
                            PHP-Code:
                            function str_cut ($String,$Zeichenkette,$Anzahl) {
                                
                            $Wert $String;
                                for (
                            $i=0$Anzahl >= $i AND stristr($Wert,$Zeichenkette); $i++) {
                                    
                            $Wert stristr($Wert,$Zeichenkette);
                                }
                                
                            $LengthWert = -strlen($Wert);
                                
                            $newstring substr($String,0,$LengthWert);
                                return 
                            $newstring;

                            Aber leider krieg ich genau das gleiche Ergebnis. Bis zum ersten auftreten der Zeichenkette macht er des ganze, er durchläuft die Schleife auch richtig, nur ändert er anscheinend $Wert nicht mehr nach dem ersten durchlauf.
                            @wahsaga:
                            Ich habs mir jedesmal per echo ausgeben lassen. Ich will hier nur nicht den echo durchsetzten code posten...

                            Über Hilfe würde ich mich echt riesig freun!
                            DAS Forum für PHP & ähnliches

                            Kommentar


                            • #15
                              HABS GELÖST!!!!!
                              Total der dumme Fehler! Naja, da merkt man halt, dass ich blutiger Anfänger bin.
                              stristr() bzw strstr() schneiden alles vor der Zeichenkette ab, aber die Zeichenkette selber bleibt stehen. Wie dumm, dann kann er beim nächsten durchlauf ja gar nix mehr abschneiden!
                              Jetzt sieht die Funktion folgendermaßen aus und funktioniert auch einwandfrei:
                              PHP-Code:
                              function str_cut ($String,$Zeichenkette,$Anzahl) {
                                  
                              $Wert $String;
                                  for (
                              $i=0$Anzahl >= $i AND stristr($Wert,$Zeichenkette); $i++) {
                                      
                              $Wert stristr($Wert,$Zeichenkette);
                                      
                              $Wert substr($Wert,2);
                                  }
                                  
                              $LengthWert = -strlen($Wert);
                                  
                              $newstring substr($String,0,$LengthWert);
                                  return 
                              $newstring;

                              DAS Forum für PHP & ähnliches

                              Kommentar

                              Lädt...
                              X