Php 为什么编码不';功能不正常吗?

Php 为什么编码不';功能不正常吗?,php,regex,function,encoding,character-encoding,Php,Regex,Function,Encoding,Character Encoding,我有一个清除特定文件中的输入(删除修剪、特殊字符和数字)的函数和一个我称之为该函数的索引 // In index.php $input = format_input($_POST['name']); // In inc/function.php function format_input($input){ $pattern = '/[^a-zA-ZÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ\-\'\s]/'; $o

我有一个清除特定文件中的输入(删除修剪、特殊字符和数字)的函数和一个我称之为该函数的索引

// In index.php
$input = format_input($_POST['name']);

// In inc/function.php
function format_input($input){
    $pattern = '/[^a-zA-ZÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ\-\'\s]/';
    $output = preg_replace($pattern, "", $input);
    $output = trim($output);
    $output = ucfirst(strtolower($output));
    return $output;
}
如果我在索引中使用这个函数,编码是可以的,但是如果我在另一个文件中使用对这个函数的调用,我的正则表达式中有黑色的losange

文件都是utf-8格式,我不明白为什么不工作

试试这个:

$output = ucfirst(mb_strtolower($output,'utf-8'));
而不是:

$output = ucfirst(strtolower($output));

什么类型的调用?您是否检查了您正在处理的所有文件是否都是UTF-8编码的?或者,您可以使用\u0000符号列出您的字符。这也适用于非UTF-8文件。Dainis Abols:“$input=format\u input($\u POST['name']);”ssc-hrep3:是的,它们是:(⧫⧫ 没有看到“黑色洛桑”。⧫⧫你是说这会发生在同一个输入字符串上吗?!