php - php中的unicode preg_replace问题

标签 php regex unicode utf-8 preg-replace

我得到了字符串

$result = "bei einer Temperatur, die etwa 20 bis 60°C unterhalb des Schmelzpunktes der kristallinen Modifikation"

直接来自 MySQL 表。表格和 php header 都设置为 UTF-8

我想去除“学位”符号:http://en.wikipedia.org/wiki/Degree_symbol并将其替换为“度”一词以获得:

“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

如果我这样做了::

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

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

我不擅长编码...我做错了什么?

最佳答案

使用

$result = preg_replace('/\x{00B0}/u'," degrees ", $result );

请参阅here有关 \x{FFFF} 语法的更多信息。

请务必注意 \xB0\x{00B0} 之间的区别:

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

关于php - php中的unicode preg_replace问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3140734/

相关文章:

java - Spring @RequestMapping "Not Contains"正则表达式

delphi - 当非 unicode 页面为韩语 (949) 时,为什么 ReadLine 会误解 UTF 8 文本?

php - 空字段可以插入到我的数据库中

php - 来自 textarea 的数组没有为 MySQL 查询(UTF8?)正确地换行?

java - 正则表达式 URL 检查

python - 在正则表达式中搜索到字符串末尾

php - 从用户代理中提取浏览器元素

javascript - MySQL 表填充下拉列表。选择后,将填充第二个下拉列表

unicode - 为什么我们所做的一切都不是 Unicode?

sql - 如何在 Perl 5 中将此 Unicode 表导出为 CSV?