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

Posted

技术标签:

【中文标题】无法使用php读取数组中的重音名称[重复]【英文标题】:cannot read accented name in array with php [duplicate] 【发布时间】:2021-01-06 16:48:08 【问题描述】:

我想检查一个名称是否已存在于数组中。 我对包含重音字符的名称有疑问。 下面是使用的代码,在填写(法语)名称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>

【问题讨论】:

试试urldecode php.net/manual/en/function.urldecode.php 类似:***.com/q/53770257/2943403 @Slava 这是废话,因为 htmlentities() 被调用 【参考方案1】:

你在比较苹果和橘子。

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

因此,当您从 $_POST 变量中获取值时,请删除 htmlentities()

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

并且仅在输出数据之前使用该函数:

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

作为一般经验法则,不要对输入数据进行编码。仅在使用数据时对数据进行编码,因为不同的用例需要不同类型的编码。

【讨论】:

以上是关于无法使用php读取数组中的重音名称[重复]的主要内容,如果未能解决你的问题,请参考以下文章

无法解决“..中的数组到字符串转换” [重复]

NSDictionary 无法读取 web 服务中的数组

无法从从 sql 数据库读取的 javascript 函数中获取返回数组 [重复]

如何将带有无效字符(重音)的 Pandas 数据框与数组匹配? [复制]

MATLAB:无法调用或索引到临时数组[重复]

无法获得其中包含数组名称的二维数组的长度 [重复]