替换 php 中的非标准字符


Replace non standard characters in php

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

当我尝试像这样直接替换它们时,它工作正常:

$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> 

任何帮助都会很棒!!

很可能

你的角色集是错误的。我建议在输出 html 时发送以下标头:

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

与存储文件的字符集匹配的位置。

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

编辑 - 您还可以通过 HTML5 或 xHTML 更新字符集:

HTML5

<meta charset="UTF-8"/>

xHTML

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