替换php中的非标准字符

时间:2012-06-06 10:49:55

标签: php html post str-replace

我正在尝试用Ë'等数字实体替换一些非标准字符,如ë,Ë,ç,Ç,但我遇到了一些问题。

当我尝试直接替换它们时,它可以正常工作:

$string = "Ë";
$vname = str_replace("Ë","AAAA",$string);
echo $vname."<br>";

我得到了AAAA。 但是当我尝试从一个带有POST的表单中获取的字符串替换字符时,它不会更改字符。这是一个例子:

<?php
if(isset($_POST['submit'])) {
$string = $_POST['title'];
if ($string == "Ë")
echo "Yes";
else
echo "No";
$vname = str_replace("Ë","AAAA",$string);
echo $vname."<br>";
echo $string;
}
?>
<form method="post" name="Form">
Title: <input name="title" type="text" value="" size="20"/>
<input name="submit" type="submit" value="submit"/>
</form> 

任何帮助都会很棒!!

1 个答案:

答案 0 :(得分:1)

你的角色很可能是错的。我建议在输出html时发送以下标题:

<?php header("content-type: text/html; charset=utf-8"); ?>

charset与您存储文件的charset匹配。

编辑:更多信息。您存储的文件位于一个字符集中,例如latin1,而您的浏览器将您的html页面解释为另一个字符集(例如utf-8)。当浏览器发送Ë字符时,它将发送utf-8代码0xc38b,而相同的字符是0xcb。如您所见,这些不匹配。

编辑 - 您还可以通过HTML5或xHTML更新CHARSET:

<强> HTML5

<meta charset="UTF-8"/>

<强> XHTML

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