php中的unicode preg_replace问题

Ed *_*wis 4 php regex unicode utf-8 preg-replace

我有字符串

$result = "bei einer Temperatur, die etwa 20 bis 60°C unterhalb des Schmelzpunktes der kristallinen Modifikation"
Run Code Online (Sandbox Code Playgroud)

它直接来自MySQL表.该表和php标头都设置为UTF-8

我想删除'学位'符号:http://en.wikipedia.org/wiki/Degree_symbol并将其替换为'degrees',以获得:

"bei einer Temperatur,die etwa 20 bis 60degreesC unterhalb des Schmelzpunktes der kristallinen Modifikation"

但我不能让它与preg_replace一起工作.

如果我做:

$result = preg_replace('/\xB0/u'," degrees ", $result ); - I get an empty string
Run Code Online (Sandbox Code Playgroud)

如果我这样做::

$result = preg_replace('/\u00B0/u'," degrees ", $result ); - I get the error:
Run Code Online (Sandbox Code Playgroud)

警告:preg_replace()[function.preg-replace]:编译失败:PCRE不支持/ var/www/html/includes/classes /中偏移量为1的L,\ l,\ N,\ U或\ u第75行的redeyeTable.inc.php

编码时我不是很好......我在这里做错了什么?

Ste*_*rig 25

使用

$result = preg_replace('/\x{00B0}/u'," degrees ", $result );
Run Code Online (Sandbox Code Playgroud)

有关-syntax的更多信息,请参阅此处\x{FFFF}.

需要注意的区别是很重要的\xB0\x{00B0}:

  • \xB0表示具有十六进制代码B0(176十进制)的单个字符,°例如ISO-8859-1中的度数符号()
  • \x{00B0}表示unicode代码点U+00B0,它描述°unicode系统中的度符号().\xC2\xB0使用UTF-8编码时,此代码点将使用两个字节进行编码.

  • @Ed:您可以将答案标记为"已接受",以向其他用户显示这是您问题的解决方案. (3认同)
  • @EdLewis如果您认为答案有用,请将答案标记为已接受. (2认同)

gre*_*ire 5

如果使用"U"修饰符,模式应该被视为UTF-8,那么为什么不干脆写"度"而不是"\ u00B0"或"\ XB0"?