无法使用php读取数组中的重音名称



我想检查一个名称是否已经存在于数组中。我对一个包含重音字符的名称有问题。以下是使用的代码,当填写(法语(名称Charlène Rodriês和(德语(名称Jürgen Günter时;它输出:不存在

我该如何获取这些包含重音字符的名称?

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
if (isset($_POST['bioname'])) {
$bioname = trim(htmlentities($_POST['bioname']));

$array = array('John Doe','Bill Cleve','Charlène Rodriês','мария преснякова','Jürgen Günter');

if (in_array($bioname_raw, $array)) { // if bioname already exists
echo '<div">'.$bioname.' ALREADY exists!</div>';
}
else {
echo '<div">'.$bioname.' NOT exists!</div>';
}   
}
}
?>
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="POST">    
<input class="form-control" name="bioname" type="text" placeholder="AUTHORNAME">    
<button type="submit" id="cf-submit" name="submit" class="btn btn-primary w-100">POST</button>                                  
</form>

您正在比较苹果和桔子。

当您执行htmlentities('Charlène Rodriês')时,它会更改字符串并将其编码为:Charl&egrave;ne Rodri&ecirc;s,这显然与in_array()中的Charlène Rodriês不匹配。

因此,当您从$_POST-variable:中获得值时,请删除htmlentities()

$bioname = trim($_POST['bioname']);

并且只在输出数据之前使用该功能:

echo '<div">'. htmlentities($bioname).' ALREADY exists!</div>';

一般来说,不要在输入时对数据进行编码。只有当使用时才对数据进行编码,因为不同的用例需要不同类型的编码。

相关内容

  • 没有找到相关文章

最新更新