【发布时间】:2011-03-09 14:49:11
【问题描述】:
我有字符串
$result = "bei einer Temperatur, die etwa 20 bis 60°C unterhalb des Schmelzpunktes der kristallinen Modifikation"
直接来自 MySQL 表。表格和 php 标头都设置为 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 行
我不擅长编码...我在这里做错了什么?
【问题讨论】:
-
您发布的第一个解决方案非常适合我。
-
根据此页面(以及您的错误消息顺便说一句),您不能使用 \u fr.php.net/manual/en/reference.pcre.pattern.differences.php
-
你确定你有相同的符号吗? Unicode 有很多相似的字符。
-
第一个应该可以正常工作。但如果你只是替换它,你可以使用更快的 str_replace() 来代替。
-
感谢 cmets - 我同意第一个选项应该有效。我不知道为什么它会删除所有文本。我发现 PHP 和 UTF-8 是一个相当棘手的组合。我只是使用标准的 ubuntu 10.04 安装和最新的稳定 PHP 构建,不知道为什么字符处理每次都失败。
标签: php regex unicode utf-8 preg-replace