不能用字符串中的£替换£

时间:2011-11-22 13:40:35

标签: 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;

有什么想法吗?

修改

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

4 个答案:

答案 0 :(得分:7)

只是猜测,但即使您的网站以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

答案 1 :(得分:1)

html_entity_decode(str_replace("&pound;", "", htmlentities($str)));

答案 2 :(得分:0)

$str = '<span class="price">£89.99</span>';
echo str_replace("£","&pound;",$str);

输出:

<span class="price">&pound;89.99</span>

答案 3 :(得分:0)

$data = str_replace("£","&pound;",utf8_encode($data));
echo $data;