Mailinglisten-Archive |
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