2012-03-31 9 views
0

Ich habe einen Text wie diesenautomatisch Währungen und Metriken aus einem Text in PHP

$text="The tower is 94.5m high, 
     the view is up to 100km. 
     The entrance is 8€"; 

nun das Ergebnis so möchte ich für jede Metrik oder Währungen den Tooltip bieten zu bekommen:

$text="The tower is <abbr title="310ft">94.5m</a> high, 
     the view is up to <abbr title="62mi">100km</abbr>. 
     The entrance is <abbr title="10USD">8€</abbr> 

Einige nette PHP-Funktion, um diese Zahlen automatisch im Text zu konvertieren? Vielen Dank.

bearbeiten

Um dieses Beispiel zu vereinfachen, nehmen wir an, wir fix Raten überall haben. Die Frage ist, welche Art von preg_replace oder was auch immer zu verwenden, ... habe ich nur so etwas wie dieses

preg_replace("/(.*)€/", $1*1.2, $text) 

, das ist nur ein Beispiel, wie ich es erwartet hatte, damit es funktioniert, aber natürlich ist es nicht. :)

+0

Die meisten dieser Konvertierungen sind eine einfache Multiplikation oder Division und Sie können Konvertierungstabellen an vielen Stellen finden. Die Konvertierung zwischen den Währungen wird fast täglich variieren, also ist es schwieriger. Aber was hast du probiert, oder hoffst du nur, dass jemand es für dich tun wird? –

+0

Nein Mark möchte nicht, dass irgendjemand es für mich tut, ich hoffe nur auf einen Rat, wie kann ich preg_replace benutzen oder wie werden diese Konvertierungen gemacht? Vielen Dank. – jakubos

+0

Hör auf deine Hausaufgaben Fragen hier zu stellen, frech frech. – deed02392

Antwort

0

Etwas wie folgt aus:

$text="The tower is 94.5m high, 
     the view is up to 100km. 
     The entrance is 8€"; 

$result = preg_replace_callback("/(([0-9\.]+)(k?m))/", 'fn', $text); 

var_dump($result); 

function fn($matches) { 
    switch($matches[3]) { 
     case 'm' : 
      // m to feet 
      $conversion = $matches[2] * 3.28; 
      $conversionUOM = 'ft'; 
      break; 
     case 'km' : 
      // km to miles 
      $conversion = $matches[2] * 0.6; 
      $conversionUOM = 'miles'; 
      break; 
    } 
    return '<abbr title="'.$conversion.$conversionUOM.'">'.$matches[0].'</abbr>'; 
} 

Sie werden die regexp anpassen müssen und weitere Fälle für andere UOM Umwandlungseinheiten Sie wahrscheinlich brauchen sind, und verwenden Sie die richtigen Zahlen in den Schreib tatsächliche Umrechnungen (ich habe nur schnelle und schmutzige Werte verwendet), und jede Formatierung der Zahlen zu ... aber es sollte Ihnen die Grundlage geben.

2

Es gibt keine integrierte PHP-Funktion, die automatisch zwischen verschiedenen Einheitentypen konvertiert. Sie müssen es selbst mit den entsprechenden Umrechnungskursen tun.

+0

ja, deshalb frage ich nach der Hilfe :) – jakubos

+0

Wenn Sie nach den Preisen suchen, sollten Sie nur Google dafür. Sie können nach "1 Fuß in Metern" suchen. –

+0

Wir sollten uns nicht auf die Zahlen und Raten konzentrieren, ich suche nach der Antwort WIE preg_replace oder etwas zu verwenden, um mit den Variablen zu arbeiten. – jakubos

0

Sie müssen Ihre eigenen Funktionen schreiben, um dies zu tun. Sie tun dies in PHP wie folgt aus:

$height_meters = 94.5; 
$height_feet = meters_in_feet($height_meters); 

Dann:

function meters_in_feet($meters) 
{ 
    return $meters*3.28; // source: Google 
} 

Dann es Ihnen gefällt nennen müssen

echo '<abbr title="'.$height_feet.'">'.$height_meters.'m</a> high.'; 

Das riecht wie ein Hausaufgaben Frage, obwohl, so Wie für das Abrufen der Messungen usw. aus einer Eingabetextfolge, was wahrscheinlich das ist, was Sie tun sollen, ist dies eine Übung für den Leser. ;)

+0

genau, ich versuche, die automatischen Konvertierungen innerhalb zu tun der eingegebene Text und das ist schwer für mich :) – jakubos

+0

Nun, wenn es nicht schwer ist, ist es nicht wert, zu tun :) – deed02392