Str_replace不执行任何操作


Str_replace does nothing

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

我正在使用以下代码,但它没有任何作用。

<?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(),但什么也没发生,就像它看不到£一样

我自己也遇到了编码问题。转到数据库,看看数据是否被篡改。如果不是,那么在连接到数据库之前,请设置连接属性,如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,并将结果输出到页面。。看看这个字符是否真的是一个英镑音,如果它是一个不同的符号,我会把它放在字符串替换函数中,而不是英镑符号

将其添加到页面的头标签:

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

str_replace不适用于您,因为针和草垛的编码不同,因此字符不匹配。事实上,编码是你唯一需要关心的问题,你不需要替换任何东西。看见http://kunststube.net/frontback有关编码需要考虑的详细信息。

有关更大的背景信息,请参阅每个程序员绝对、积极地需要了解的关于使用文本的编码和字符集的信息。

<?php
$link1 = mysql_connect('localhost','user1','pass1',TRUE);
mysql_selectdb('db1',$link1);
mysql_set_charset('utf8',$link1);
?>

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

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

我希望这就是你所需要的,如果你必须完全实现unicode,它会变得非常复杂。如果使用贡献的mb_str_replace不起作用,您可能需要在php.ini中打开unicode功能,以便php能够识别出您试图替换的字符是unicode字符。