Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » News abgekürzt ausgeben (siehe 4websites) Antworten
News abgekürzt ausgeben (siehe 4websites)

FrediL
Fachidiot


Beiträge: 101


Hallo !!!

Ich bin gerade damit beschäftigt ein Newssystem zu basteln. Dazu speicher ich die News in einer DB-Spalte als Text. Ich möchte außerdem eine übersichtliche Anzeige aller News erstellen, wie es z.B. bei www.4websites.de der Fall ist. Dort wird immer nach genau 4 Zeilen der Text unterbrochen. Wie kann ich dies erzwingen, ohne dass mir das Programm den Text mitten in einem Wort kappt?

Idee:
Irgendwie müsste ich die Zeilen mitzählen und dann an entsprechender Stelle die Textausgabe beenden. Könnte also irgendwie mit einer for-schleife realisiert werden.
Leider habe ich keinerlei genaue Vorstellungen über die Realisierung.

Kann mir jmd. weiterhelfen? Vielen Dank im Voraus
FrediL


---
ergebniswelt.com -> Fußballergebnisse und mehr

  Profil   Website   Editieren   Zitieren

Can
Halbgott


Beiträge: 1330


Bei 4websites läuft es - schätz ich - mit einer "toleranten Zeichenbegrenzung" (z.B. 230 Zeichen), d.h. es wird nach Position 230 nach dem nächsten Leerzeichen gesucht und dort abgeschnitten. Damit erreicht man dann, dass nicht mitten im Wort abgeschnitten wird, aber die Textlänge doch überall ungefähr gleich ist...

Can

---
"S-púrlawits'chkâ A-ngáse gûrewüdíx" - Zaphrot Bibelprox

  Profil   E-Mail   Editieren   Zitieren

Philipp Gérard
Foren-Team


Beiträge: 1508


intolerater weg:

1: 
2:
$text = substr($text,0,200);
echo $text.'...';


---
Arbeit ist das Feuer der Gestaltung. - Marx

  Profil   E-Mail   Website   Editieren   Zitieren

chip
Quasselstrippe


Beiträge: 391


Nabend,

schau mal hier:

http://www.php4u.net/index.php?main=codeschnipsel&source=18

Das dürfte das Richtige sein.

Bis denne ...

---

  Profil   Website   Editieren   Zitieren

FrediL
Fachidiot


Beiträge: 101


ok, danke. das hat mir alles weitergeholfen. jetzt werde ich erstmal ein bisschen basteln.

---
ergebniswelt.com -> Fußballergebnisse und mehr

  Profil   Website   Editieren   Zitieren

[SpecFor]crusher
Otto-Normal-Poster


Beiträge: 97


Hi!

Ich habe mal das von chip probiert, bekomme aber massig offset-Fehler, sehe aber keinen Fehler im Script. Evtl. seht ihr den ja:
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13:
//Die Funktion an sich
function word_substr($text, $zeichen, $kolanz=3, $punkte=0) {
    $wort = explode(" ",$text);
    $newstr = "";
    $i = 0;
    while(strlen($newstr)<=$zeichen &&
          strlen($newstr.$wort[$i])<=($zeichen+$kolanz)) {
        $newstr .= $wort[$i]." ";
        $i++;
    }
    $newstr .= str_repeat(".",$punkte);
    return $newstr;
}


1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19:
//Der Aufruf im Script
<?php
  $sql = "SELECT title FROM news ORDER BY 'time' DESC";
  mysql_select_db($db['database'], $db['connect']);
  $r_news = mysql_query($sql, $db['connect']);
  if( @mysql_num_rows($r_news) > 0 )
    {
      $result = array();
      for($i = 0; $i < mysql_num_rows($r_news); $i++)
        {
          $result[$i] = mysql_fetch_array($r_news);
        }
      for($i = 0; $i < 5; $i++)
        {
          $title_prev = word_substr($result[$i]['title'], 30, 5, 3); 
          echo "<tr><td width=\"100%\">".$title_prev."</td></tr>";
        }
      }
?>

  Profil   E-Mail   Website   Editieren   Zitieren

chip
Quasselstrippe


Beiträge: 391


Hab den Quelltext nur überflogen, aber scheint zu stimmen. Das selbe Problem hatte ich auch mit dieser Funktion. Der Offset-Fehler kommt nur, wenn der Input für die Funktion, sprich der zu kürzende Text, zu kurz ist, also knapp über der Kürzen-Schwelle oder drunter. Muss mir noch mal genauer anschauen.

---

  Profil   Website   Editieren   Zitieren

Michi
Otto-Normal-Poster


Beiträge: 43


danke für den hinweis, werde den code dahingehend mal bearbeiten ;)

  Profil   E-Mail   Website   Editieren   Zitieren
 

Antworten
Nach oben