I've got the string
$result = "bei einer Temperatur, die etwa 20 bis 60°C unterhalb des Schmelzpunktes der kristallinen Modifikation"
which comes straight from a MySQL table. The table, and the php headers are both set to UTF-8
I want to strip the 'degree' symbol: http://en.wikipedia.org/wiki/Degree_symbol and replace it with the word 'degrees' to get:
"bei einer Temperatur, die etwa 20 bis 60degreesC unterhalb des Schmelzpunktes der kristallinen Modifikation"
but I can't get it to work with preg_replace.
If I do:
$result = preg_replace('/\xB0/u'," degrees ", $result ); - I get an empty string
And if I do::
$result = preg_replace('/\u00B0/u'," degrees ", $result ); - I get the error:
Warning: preg_replace() [function.preg-replace]: Compilation failed: PCRE does not support \L, \l, \N, \U, or \u at offset 1 in /var/www/html/includes/classes/redeyeTable.inc.php on line 75
I'm not great with encodings... what am I doing wrong here?
Use
$result = preg_replace('/\x{00B0}/u'," degrees ", $result );
Please see here for more information on the \x{FFFF}
-syntax.
It's important to note the difference between \xB0
and \x{00B0}
:
\xB0
denotes a single character with hex-code B0
(176
decimal) which is the degree symbol (°
) in ISO-8859-1 for example\x{00B0}
denotes the unicode codepoint U+00B0
which describes the degree symbol (°
) in the unicode system. This codepoint will be encoded using two bytes \xC2\xB0
when using UTF-8 encoding.If you use the 'u' modifier, the pattern is supposed to be treated as utf-8, so why not simply write '°' instead of '\u00B0' or '\xB0'?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With