phpbar.de logo

Mailinglisten-Archive

[php] String Formatierung

[php] String Formatierung

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Fre Dez 2 14:33:20 CET 2005


Hallo Christian,

Am Freitag, 2. Dezember 2005 13:10 schrieb Christian Hörmann:
> >kurze Nachfrage:
> >
> >Ist die Syntax immer von hinten gesehen drei Stellen, Punkt, drei Stellen,
> >Punkt, zwei Stellen, Bindestrich, drei Stellen, wobei vorne etwas
> > wegfallen kann? Anders gefragt - sind das alle möglichen Kombinationen:
> >
> >1
> >01
> >901
> >8.901
> >78.901
> >678.901
> >5.678.901
> >45.678.901
> >3-45.678.901
> >23-45.678.901
> >123-45.678.901
>
> genau richtig! so hab ichs gemeint. du hast den nagel ziemlich genau auf
> den kopf getroffen.

ok. Dann kommt hier ein Lösungsvorschlag von mir:

<?php

  function formatiereZeichenkette($sZeichenkette) {

    $iZeichenkette = strlen($sZeichenkette);
    $aZeichenkette = array_reverse(str_split($sZeichenkette, 1));
    $sZeichenkette = '';

    foreach ($aZeichenkette as $iSchluessel => $sZeichen) {
      $sZeichenkette = $sZeichen.$sZeichenkette;
      if ($iZeichenkette>($iSchluessel+1)) {
        if ($iSchluessel==2 || $iSchluessel==5) {
          $sZeichenkette = '.'.$sZeichenkette;
        } else if ($iSchluessel==7) {
          $sZeichenkette = '-'.$sZeichenkette;
        }
      }
    }

    return $sZeichenkette;
  }

  $aZeichenketten = array('1', '01', '901', '8901', '78901', '678901', 
'5678901', '45678901', '345678901', '2345678901', '12345678901');

  echo('<table border="1">');
  foreach ($aZeichenketten as $sZeichenkette) {
    echo('<tr><td align="right">'.$sZeichenkette.':</td><td 
align="right">'.formatiereZeichenkette($sZeichenkette).'</td></tr>');
  }
  echo('</table>');

?>

Ich vermute mal, wenn man sich mit regulären Ausdrücken auskennt, kann man das 
auch in einen komplizierten regulären Ausdruck packen... :-) Ansonsten ist 
das oben die konventionelle Lösung, die mir am einfachsten erscheint. ;-)


Viele Grüße
Lutz

php::bar PHP Wiki   -   Listenarchive