php - 无法用字符串中的 &pound 替换 £

标签 php encoding character-encoding str-replace

我有一个包含 £ 符号的 HTML 字符串,出于某种原因我无法替换它们。我假设这是一个编码问题,尽管我不知道如何解决。该站点使用 ISO-8859-1 进行编码

$str = '<span class="price">£89.99</span>';
var_dump(mb_detect_encoding($str, 'ISO-8859-1', true)); // outputs ISO-8859-1

echo str_replace(array("£","&pound;"),"",$str); // nothing is removed

echo htmlentities($str); // the entire string is converted, including £ to &pound;

有什么想法吗?

编辑

应该指出我想用 £ 替换 £; - 我临时将 £ 添加到要替换的项目数组中,以防它已经被转换

最佳答案

只是一个猜测,但有没有可能即使您的网站以 ISO-8859-1 编码输出,您实际的 *.php 文件也保存为 utf-8?我认为 str_replace 不能正确处理 utf-8 字符串。要测试它,请尝试:

str_replace(utf8_decode("£"),"&pound;",utf8_decode($str));

是的,如果这可行,那么您的 *.php 文件将以 utf-8 编码保存。这意味着所有字符串常量都在 utf-8 中。可能值得将 IDE 中的默认编码切换为 ISO-8859-1

关于php - 无法用字符串中的 &pound 替换 £,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8227771/

相关文章:

string - Swift String 编码和 NSXMLParser 解析问题

c - C语言中的字符编码取决于什么?

java - 如何在 Oracle 中存储 Unicode 字符?

Oracle12 : lpad function does not manage 2 bytes characters as Oracle11

php - 在 PHP 中,哪些异常代码映射到 http 状态代码?

php - 检测 ajax 上传何时意外终止

python - 使用 Blender 中嵌入的 Python 解码 URL

php - 如何从数据库中获取时间总和?

javascript - 验证 html 中的 SA 增值税号

java - 使用带有 UTF-8 编码的 JXL 读取文件