Str_replace什么都不做

时间:2012-09-03 17:36:05

标签: php mysql

我想将所有£替换为其HTML代码£=> £因为它显示为?钻石。

我使用以下代码,但它什么也没做。

<?php
    include ("config.php");

    $get_id = mysql_real_escape_string($_GET['id']);
    $page_get = mysql_query("SELECT * FROM contents_page WHERE `id` = '$get_id'");
    while($page_row = mysql_fetch_assoc($page_get)) {
        $page_row["Page_Content"] = str_replace('£','&pound;',$page_row[Page_Content]);
        $smarty->assign('page_title',       $page_row['Page_Title']);
        $smarty->assign('page_content',     $page_row['Page_Content']);     
    }

    $smarty->display('page.tpl');
?>

我正在使用str_replace()但没有任何事情发生它就像它看不到£

5 个答案:

答案 0 :(得分:1)

将此添加到您网页的head标记:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

答案 1 :(得分:1)

我自己有编码问题。转到数据库,查看数据是否出现乱码。如果不是,则在连接数据库之前设置连接属性,如SET CHAR UTF8 ..

$link1 = mysql_connect('localhost','user1','pass1',TRUE); 


mysql_selectdb('db1',$link1); 

mysql_set_charset('utf8',$link2);

另一个解决方案是查看输入在进入数据库之前编码的内容,然后将字符集更改为

mysql_set_charset( 'LATIN1',$ LINK2);

例如。

无论如何,我会做什么,我仍然会将我的字符设置为utf-8,将结果输出到页面..看看该字符是否真的是一个重听的声音,如果它是一个不同的符号,我会把它在字符串替换函数而不是英镑符号

答案 2 :(得分:0)

您可能需要类似自我实现的mb_str_replace(),假设磅符号不在标准的ascii集内。

该页面上有多个示例实现: http://php.net/manual/en/ref.mbstring.php

我 - 希望 - 这就是你所需要的,如果你必须完全实现unicode它会变得非常烦人。可能你可以避免,如果使用mb_str_replace贡献不起作用,你可能必须在php ini中启用unicode功能,以便php甚至可以识别你要替换的字符是unicode之一。

答案 3 :(得分:0)

str_replace不适合你,因为针和大海捞针的编码不同,因此字符不匹配。事实上,编码是您需要关心的唯一问题,您不需要替换任何东西。有关编码需要考虑的内容的详细信息,请参阅http://kunststube.net/frontback

对于更大的背景图片,请参见What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text

答案 4 :(得分:0)

<?php
$link1 = mysql_connect('localhost','user1','pass1',TRUE);

mysql_selectdb('db1',$link1);

mysql_set_charset('utf8',$link1);
?>