phpbar.de logo

Mailinglisten-Archive

[php] string kuerzen

[php] string kuerzen

Matthias Luedtke php_(at)_phpcenter.de
Thu, 26 Apr 2001 16:27:37 +0200


Hallo Namensvetter,

ich steuere hiermit auch noch eine Loesung bei:

function is_word_end ($c)
/*
 Ueberprueft, ob der Buchstabe das Ende eines Wortes ist.

 Rueckgabewert:
       0, wenn es sich um einen normalen Buchstaben handelt
       1, wenn es das Ende eines Wortes ist (Leerzeichen oder , . ? ! ;)
      -1, wenn kein einzelner Buchstabe uebergeben wurde

*/
{

  // Ist der Parameter wirklich ein Buchstabe?
  if (!is_string ($c))
    return -1;
  if (strlen ($c) != 1)
    return -1;

  // Diese Zeichen Werden als Wortende akzeptiert
  $signs = array (',',
                  '.',
                  '?',
                  '!',
                  ';',
                  ' ');

  // Ueberpruefen der einzelnen Zeichen
  for ($i = 0; $i < count($signs); ++$i)
    if ($c == $signs[$i])
      return 1;

  return 0;
}

function StrShorten ($str, $num_chars)
/*
 Kuerzt $str auf $num_chars und nimmt ggf. noch Zeichen mit,
 damit ein Wort nicht in der Mitte abgeschnitten wird.

 Rueckgabewert:
       $str mit einer Laenge von $num_chars + (maximal 20) zusaetzlichen
Zeichen
*/
{
  // Wurden die richtigen Parameter uebergeben?
  if (!is_string ($str))
    return;
  if (!is_int ($num_chars))
    return;

  // Es muessen mehr als 0 Buchstaben abgeschnitten werden
  if ($num_chars < 1)
    return;

  // Abschneiden der ersten &num_char Woerter
  $ret = substr ($str, 0, $num_chars);

  // Wenn der String kleiner als $num_char ist, wird er direkt ausgegeben
  if ($num_chars > strlen($str))
    return $ret;

  $added_chars = 0;
  while (is_word_end (substr($ret, -1)) != 1 && $added_chars++ < 20)
      $ret = $ret.substr($str, $num_chars++, 1);

  return $ret;
}

> wie könnte es in php möglich sein, einen vorhanden string von maximal 200
> zeichen auf eine länge von 10 worten zu kürzen und hintendran "..." zu
> hängen? wäre die zerlegung mit explode() anhand der leerzeichen ein
mögliche
> lösung?


Einfach StrShorten ($dein_super_string, $anzahl_der_zeichen) aufrufen und
gluecklich sein. Die "..." musst du selbst noch dranhaengen.

Gruss,
   Matthias

--
Matthias Luedtke, matthias-luedtke_(at)_gmx.de
Afgrnd der Ensparngsmassnhmen bei den Onlne-Kostn ist ab sfort in jedm Wrt
von mhr als dri Buchstabn mindestns ein Vkal wegzlassn.



php::bar PHP Wiki   -   Listenarchive