Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Geleitwort
Vorwort
1 PEAR – Einführung
2 Authentication
3 Caching
4 Date and Time
5 File Formats
6 HTTP
7 Internationalization
8 Mail
9 Networking
10 PHP
11 Text
12 Web Services
13 Benchmarking
14 Configuration
15 Database
16 File System
17 HTML
18 Images
19 Logging
20 Math
21 Numbers
22 Tools and Utilities
23 XML
24 Selbst Pakete erstellen
25 PECL
Index
Ihre Meinung?

Spacer
 <<   zurück
PHP PEAR von Carsten Möhrke
Anwendung und Entwicklung – Erweiterungen für PHP schreiben
Buch: PHP PEAR

PHP PEAR
798 S., 39,90 Euro
Rheinwerk Computing
ISBN 3-89842-580-0
gp 21 Numbers
  gp 21.1 Numbers_Roman
  gp 21.2 Numbers_Words


Rheinwerk Computing

21.2 Numbers_Words  toptop


Besprochene Version: 0.11.0 Lizenz: PHP-Lizenz
Klassendatei(en): Numbers/Words.php

Eine Zahl in eine Text-Darstellung zu bringen, also z. B. die Zahl 13 in »dreizehn« zu konvertieren, ist recht aufwändig zu programmieren. Genau dieses Problems nimmt sich Numbers_Words an und bietet sogar eine Unterstützung für mehrere Sprachen. Das Paket besteht aus zwei Methoden, die statisch aufgerufen werden können. Es handelt sich um toCurrency() und toWords(). Bevor ich auf die Methoden eingehe, ein Wort zur allgemeinen Funktionsweise. Zur Lokalisierung nutzt das Paket Dateien, die für jede Sprache eine entsprechende Übersetzung enthalten. Diese Dateien sind von unterschiedlichen Personen implementiert worden, so dass nicht für jede Sprache derselbe Funktionsumfang zur Verfügung steht.

Momentan werden die in Tabelle 21.1 dargestellten Sprachen unterstützt.


Tabelle 21.1 Sprachen, die Numbers_Words unterstützt (X = wird unterstützt)
Sprache Bezeichner toWords(  ) toCurrency(  )
Bulgarisch bg X  
Deutsch de X  
Dänisch dk X X
Estnisch ee X  
Englische Zahlen nach Donald Knuth en_100 X  
Britisches Englisch en_GB X  
Amerikanisches Englisch en_US X X
Spanisch es X  
Argentinisches Spanisch es_AR X X
Französisch fr X  
Ungarisch hu_HU X X
Indonesisch id X  
Italienisch it_IT X  
Litauisch lt X  
Polnisch pl X X
Brasilianisches Portugiesisch pt_BR X X
Russisch ru X X
Schwedisch sv X  

Die Bezeichner, die hier Verwendung finden, sind leider nicht ganz mit den üblichen Locales identisch. Üblicherweise müsste sonst de_DE für Deutschland genutzt werden. Diese eigene Kreation hat historische Gründe, und vor allem gibt es keine ISO-Vorgabe für eine Zahlenangabe nach Donald Knuth. Bei einer Angabe nach Knuth wird die Zahl 1102 nicht als one thousand one hundred two, sondern als eleven hundred two ausgegeben.

Der Code, den Sie angeben, wird direkt zum Einbinden der dazugehörigen Sprachdatei genutzt, so dass die korrekte Groß- und Kleinschreibung wichtig ist.

Die Methode toWords() wandelt einen ganzzahligen Wert in seine textuelle Darstellung um und bekommt demzufolge eine Zahl als Parameter übergeben. Da das Paket auch Zahlen konvertieren kann, die deutlich größer als das sind, was der Integer-Datentyp abdeckt, können Sie die Zahl auch als String übergeben. Der zweite Parameter ist optional und definiert die Sprache, in der die Ausgabe erfolgen soll. Geben Sie ihn nicht an, wird die Ausgabe in amerikanischem Englisch gehalten.

require_once("PEAR.php"); 
require_once("Numbers/Words.php"); 
$res = Numbers_Words::toWords("1102","de"); 
if (true==PEAR::isError($res)) 
{ 
   die($res->getMessage()); 
} 
echo $res; 
// gibt "eintausendeinhundertzwei" aus

Listing 21.4 Konvertieren einer Zahl in eine textuelle Darstellung

Wie Sie in dem Listing erkennen können, gibt das Paket im Fehlerfall ein PEAR_Error-Objekt zurück. Da die Klasse PEAR aber leider nur im Fehlerfall eingebunden wird, sollten Sie das selbst erledigen, um unnötige Fehlermeldungen zu vermeiden.

Die zweite Methode im Paket ist toCurrency(). Sie dient dazu, eine monetäre Zahl in eine Text-Darstellung zu überführen. Auch hier wird wieder die zu konvertierende Zahl als erster Parameter angegeben. Natürlich muss es sich in diesem Fall nicht um einen ganzzahligen Wert handeln, und auch ein String wird akzeptiert. Wichtig dabei ist, dass der ganzzahlige Anteil von dem Nachkomma-Anteil durch einen Dezimalpunkt und nicht durch ein Komma abgetrennt werden muss. Auch diese Methode bekommt erst die eigentliche Zahl übergeben und akzeptiert einen zweiten Parameter, um die Sprache zu definieren. In Tabelle 21.1 finden Sie die Sprachen, die momentan toCurrency() unterstützen. Da das Paket recht schnell weiterentwickelt wird, sollten Sie aber auf jeden Fall prüfen, ob die Sprache, die Sie benötigen, inzwischen nicht auch von toCurrency() unterstützt wird, falls das nicht schon der Fall sein sollte. Des Weiteren können Sie einen dritten Parameter angeben, um festzulegen, welche Währung bei der Ausgabe genutzt werden soll. Die Angabe der Währung erfolgt in den international üblichen 3-Buchstaben-Codes, die in ISO-4217 [Die ISO-4217 finden Sie unter http://de.wikipedia.org/wiki/ISO_4217. ] definiert sind.

require_once("PEAR.php"); 
require_once("Numbers/Words.php"); 
$res = Numbers_Words::toCurrency("10.20","en_US","USD"); 
if (PEAR::isError($res)) 
{ 
   die($res->getMessage()); 
} 
echo $res; 
// Gibt 'ten dollars twenty cents' aus 
 
$res = Numbers_Words::toCurrency("10.20","dk","DKK"); 
if (PEAR::isError($res)) 
{ 
   die($res->getMessage()); 
} 
echo "<br />"; 
echo $res; 
// Gibt 'ti kroner og tyve øre' aus

Listing 21.5 Konvertierung einer monetären Angabe in einen Text

 <<   zurück
     
  Zum Katalog
Zum Katalog: PHP PEAR
PHP PEAR
Jetzt bestellen!
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: PHP 5.6 und MySQL 5.7






 PHP 5.6 und
 MySQL 5.7


Zum Katalog: Einstieg in PHP 5.6 und MySQL 5.6






 Einstieg in PHP 5.6
 und MySQL 5.6


Zum Katalog: Responsive Webdesign






 Responsive Webdesign


Zum Katalog: Moderne Websites entwickeln






 Moderne Websites
 entwickeln


Zum Katalog: MySQL 5.6






 MySQL 5.6


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo








Copyright © Rheinwerk Verlag GmbH 2007
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de