我有一个包含£符号的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("£","£"),"",$str); // nothing is removed
echo htmlentities($str); // the entire string is converted, including £ to £
有任何想法吗?
编辑
应该指出我想用
£
代替£; -我已经将£
临时添加到要替换的项目数组中,以防它已被转换 最佳答案
只是一个猜测,但是即使您的网站以ISO-8859-1编码输出,您的实际* .php文件也保存为utf-8吗?我认为str_replace不能与utf-8字符串一起正常工作。要测试它,请尝试:
str_replace(utf8_decode("£"),"£",utf8_decode($str));
是的,如果可行,那么您的* .php文件将以utf-8编码保存。这意味着所有字符串常量都位于utf-8中。可能值得将IDE中的默认编码切换为ISO-8859-1