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