s.oliver: Gradzeichen mit preg_replace ersetzen?

Beitrag lesen

Servus,

*     [0] => Temperature: 86°F / 30°C

eben nicht. Der Text, den Dein Skript ausliest ist in diesem Fall
'Temperature: 68°F / 20°C' - entweder Du wandelst diese
Maskierungen vor dem Suchdurchlauf in das dargestellte Zeichen um,
oder Du berücksichtigst diese Formatierung im Regulären Ausdruck.

Da Du den Fahrenheit-Wert anscheinend gar nicht mehr einplanst,
kannst Du auch gleich per Lookahead nach dem Grad Celsius Wert
suchen (bitte Lookarounds, speziell Lookahead und 'non-capturing
parantheses' nachschlagen; weiter unten ist auch ein Thread zu
RegEx, wo ich versucht habe auf erstere einzugehen).

Der relevante Auszug:

  
// schaust Du wohl ;)  
echo '<pre>' . print_r( $arr, true ) . '</pre>';  
  
// finde eine natürliche Zahl nur, wenn darauf das Grad-Symbol  
// als Zeichen oder Formatierung und das C folgen; der Bereich  
// im Lookahead wird nur getestet und tritt nicht im Ergebnis auf  
preg_match( '/([0-9]+)(?=(?:&#176;|°)C)/', $arr[0], $str );  
  
echo '<pre>' . print_r( $str, true ) . '</pre>';  
  
$wetter['temp'] = $str[1];  

Grüsse