ucfirst

(PHP 4, PHP 5, PHP 7, PHP 8)

ucfirst将字符串的第一个字符大写

描述

ucfirst(string $string): string

返回一个字符串,其中 string 的第一个字符大写,如果该字符是 ASCII 字符,范围在 "a" (0x61) 到 "z" (0x7a) 之间。

参数

string

输入字符串。

返回值

返回结果字符串。

变更日志

版本 描述
8.2.0 大小写转换不再依赖于 setlocale() 设置的区域设置。只有 ASCII 字符会被转换。

示例

示例 #1 ucfirst() 示例

<?php
$foo
= 'hello world!';
$foo = ucfirst($foo); // Hello world!

$bar = 'HELLO WORLD!';
$bar = ucfirst($bar); // HELLO WORLD!
$bar = ucfirst(strtolower($bar)); // Hello world!
?>

参见

添加注释

用户贡献的注释 35 notes

plemieux
18 年前
简单的多字节 ucfirst()

<?php
function my_mb_ucfirst($str) {
$fc = mb_strtoupper(mb_substr($str, 0, 1));
return
$fc.mb_substr($str, 1);
}
?>
prokur.net - there is my email
16 年前
我相信 mb_ucfirst 很快就会在 PHP 中添加,但现在这可能会有用
<?php

if (!function_exists('mb_ucfirst') && function_exists('mb_substr')) {
function
mb_ucfirst($string) {
$string = mb_strtoupper(mb_substr($string, 0, 1)) . mb_substr($string, 1);
return
$string;
}
}

?>

它还检查 mb 支持是否已启用。
Ekin
3 年前
对土耳其语使用此函数将不起作用,因为存在多字节字符。但你可以使用一些技巧

<?php
function ucfirst_tr($str) {
$trMap = ['Ğ'=>'ğ','Ü'=>'ü','Ş'=>'ş','İ'=>'i','Ö'=>'ö','Ç'=>'ç','I'=>'ı'];
$str = mb_strtolower(strtr($str, $trMap));
$first = mb_substr($str, 0, 1);
$first = strtr($first, array_flip($trMap));
$first = mb_strtoupper($first);
return
$first . mb_substr($str, 1);
}
?>
qeremy [atta] gmail [dotta] com
12 年前
一个合适的土耳其解决方案;

<?php
function ucfirst_turkish($str) {
$tmp = preg_split("//u", $str, 2, PREG_SPLIT_NO_EMPTY);
return
mb_convert_case(
str_replace("i", "İ", $tmp[0]), MB_CASE_TITLE, "UTF-8").
$tmp[1];
}

$str = "iyilik güzelLİK";
echo
ucfirst($str) ."\n"; // Iyilik güzelLİK
echo ucfirst_turkish($str); // İyilik güzelLİK
?>
mingalevme at gmail dot com
10 年前
针对“多词”字符串的多字节 ucfirst 的实现(需要 mbstring 模块)

<?php

public static function ucfirst($str)
{
$str = mb_strtolower($str);
$words = preg_split('/\b/u', $str, -1, PREG_SPLIT_NO_EMPTY);
foreach (
$words as $word) {
$ucword = mb_strtoupper(mb_substr($word, 0, 1)) . mb_substr($word, 1);
$str = str_replace($word, $ucword, $str);
}
return
$str;
}

?>
mattalexxpub at gmail dot com
15 年前
这是我用来将字符串转换为句子大小写的方法

<?php
function sentence_case($string) {
$sentences = preg_split('/([.?!]+)/', $string, -1, PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE);
$new_string = '';
foreach (
$sentences as $key => $sentence) {
$new_string .= ($key & 1) == 0?
ucfirst(strtolower(trim($sentence))) :
$sentence.' ';
}
return
trim($new_string);
}

print
sentence_case('HMM. WOW! WHAT?');

// 输出: "Hmm. Wow! What?"
?>
charliefortune
16 年前
这是一个将姓名片段大写,并将其余部分小写的函数。您可以传递要使用的分隔符字符。

例如 <?php echo nameize("john o'grady-smith"); ?>

返回 John O'Grady-Smith

<?php

function nameize($str,$a_char = array("'","-"," ")){
//$str 包含完整的原始姓名字符串
//$a_char 是一个包含我们用作大写分隔符的字符的数组。如果您不传递任何内容,默认情况下其中有三个。
$string = strtolower($str);
foreach (
$a_char as $temp){
$pos = strpos($string,$temp);
if (
$pos){
// 我们在循环中,因为我们在数组中找到了一个特殊字符,所以让我们将其拆分成块并对每个块进行大写。
$mend = '';
$a_split = explode($temp,$string);
foreach (
$a_split as $temp2){
// 将在特殊字符处分隔的字符串的每个部分都大写
$mend .= ucfirst($temp2).$temp;
}
$string = substr($mend,0,-1);
}
}
return
ucfirst($string);
}

?>
Bartuc
18 年前
以下是土耳其字母的修正函数。

<?php

function uc_first($str){
$str[0] = strtr($str,
"abcdefgh?ijklmnopqrstuvwxyz".
"\x9C\x9A\xE0\xE1\xE2\xE3".
"\xE4\xE5\xE6\xE7\xE8\xE9".
"\xEA\xEB\xEC\xED\xEE\xEF".
"\xF0\xF1\xF2\xF3\xF4\xF5".
"\xF6\xF8\xF9\xFA\xFB\xFC".
"\xFE\xFF",
"ABCDEFGHI?JKLMNOPQRSTUVWXYZ".
"\x8C\x8A\xC0\xC1\xC2\xC3\xC4".
"\xC5\xC6\xC7\xC8\xC9\xCA\xCB".
"\xCC\xCD\xCE\xCF\xD0\xD1\xD2".
"\xD3\xD4\xD5\xD6\xD8\xD9\xDA".
"\xDB\xDC\xDE\x9F");
return
$str;
}

?>
nospam at nospam dot com
7 年前
改进的句子首字母大写方法。
前两个操作(双空格和全大写)是可选的,因此可以安全地删除。

<?php
// 返回带有句子首字母大写的字符串
function ucsentence($str) {
if (
$str) { // 输入
$str = preg_replace('/'.chr(32).chr(32).'+/', chr(32), $str); // 递归地将所有双空格替换为空格
if (($x = substr($str, 0, 10)) && ($x == strtoupper($x))) $str = strtolower($str); // 前 10 个字符的示例是 ALLCAPS,因此将 $str 转换为小写;如果始终这样做,则任何适当的大写字母都会丢失
$na = array('. ', '! ', '? '); // 标点符号针
foreach ($na as $n) { // 每个标点符号针
if (strpos($str, $n) !== false) { // 找到标点符号针
$sa = explode($n, $str); // 分割
foreach ($sa as $s) $ca[] = ucfirst($s); // 大写
$str = implode($n, $ca); // 将 $str 替换为重建版本
unset($ca); // 清除以进行下一个循环
}
}
return
ucfirst(trim($str)); // 如果没有找到标点符号针,则将首字母大写
}
}
?>

"heLLo EarthLing!" >> "HeLLo EarthLing!"
"I'M MOSTLY. caps! " >> "I'm mostly. Caps!"
"ALLCAPS" >> "Allcaps"
"i haVe neST.ed punct,u.ation! sp A c es. and CAPs.. " >> "I haVe neST.ed punct,u.ation! Sp A c es. And CAPs.."
Carel at divers information with dotcom
17 年前
我做了一个小改动。现在它可以处理数字中的点。

function ucsentence ($string){
$string = explode ('.', $string);
$count = count ($string);
for ($i = 0; $i < $count; $i++){
$string[$i] = ucfirst (trim ($string[$i]));
if ($i > 0){
if ((ord($string[$i]{0})<48) || (ord($string[$i]{0})>57)) {
$string[$i] = ' ' . $string[$i];
}
}
}
$string = implode ('.', $string);
return $string;
}
kiprasbal at gmail dot com
10 年前
我的版本,将字符串中第一个词的首字母转换为大写。

public function mb_ucfirst($str) {
$aParts = explode(" ",$str);
$firstWord = mb_convert_case($aParts[0],MB_CASE_TITLE,"UTF-8");
unset($aParts[0]);

return $firstWord." ".implode(" ",$aParts);
}
pete at namecube dot net
14 年前
对于想要将句子中每个词的首字母大写的任何人,这对我有用

<?php
function ucfirst_sentence($str)
{
return
preg_replace('/\b(\w)/e', 'strtoupper("$1")', $str);
}
?>
Quicker
13 年前
如果你想对 utf8 进行 ucfirst 操作,试试这个

<?php
function ucfirst_utf8($stri){
if(
$stri{0}>="\xc3")
return ((
$stri{1}>="\xa0")?
(
$stri{0}.chr(ord($stri{1})-32)):
(
$stri{0}.$stri{1})).substr($stri,2);
else return
ucfirst($stri);
}
?>

它很快,不依赖语言(但依赖 utf8),并且不使用任何 mb 函数,例如 mb_ucfirst。
octavius
14 年前
对于使用 utf-8 编码的立陶宛语文本,我使用两个函数(感谢 [mattalexxpub at gmail dot com] 和 Svetoslav Marinov)

<?php
function my_ucfirst($string, $e ='utf-8') {
if (
function_exists('mb_strtoupper') && function_exists('mb_substr') && !empty($string)) {
$string = mb_strtolower($string, $e);
$upper = mb_strtoupper($string, $e);
preg_match('#(.)#us', $upper, $matches);
$string = $matches[1] . mb_substr($string, 1, mb_strlen($string, $e), $e);
}
else {
$string = ucfirst($string);
}
return
$string;
}

function
sentence_case($string) {
$sentences = preg_split('/([.?!]+)/', $string, -1, PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE);
$new_string = '';
foreach (
$sentences as $key => $sentence) {
$new_string .= ($key & 1) == 0?
my_ucfirst(strtolower(trim($sentence))) :
$sentence.' ';
}
return
trim($new_string);
}
?>
Anonymous
6 年前
格式化输入字符串

<?php

function ucsentences($string){
$parts = preg_split('/([^\.\!\?;]+[\.\!\?;"]+)/', strtolower($string), (-1), PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
$r = '';
foreach(
$parts as $key=>$sentence){
$r .= ucfirst(trim($sentence)) . ' ';
}
$r = preg_replace('/\bi\b/', 'I', $r);
$r = preg_replace_callback('/("[a-z])/', function($m){ return strtoupper($m[0]);}, $r);
return
rtrim($r);
}

$str = 'i\'m not sure. if this is good enough, but i thought: "hey, who know\'s. maybe i am right."';

?>
输出
I'm not sure. If this is good enough, but I thought: "Hey, who know's. Maybe I am right."
vlknmtn at gmail dot com
12 年前
土耳其语解决方案

<?php
mb_internal_encoding
("UTF-8");
mb_regex_encoding("UTF-8");

function
tr_ilkbuyuk($text)
{
$text = str_replace("I","ı",$text);
$text = mb_strtolower($text, 'UTF-8');

if(
$text[0] == "i")
$tr_text = "İ".substr($text, 1);
else
$tr_text = mb_convert_case($text, MB_CASE_TITLE, "UTF-8");

return
trim($tr_text);
}

function
tr_ucwords($text)
{
$p = explode(" ",$text);
if(
is_array($p))
{
$tr_text = "";
foreach(
$p AS $item)
$tr_text .= " ".tr_ilkbuyuk($item);

return
trim($tr_text);
}
else
return
tr_ilkbuyuk($text);
}

$deger = "ıişllşlsdg";

echo
tr_ucwords($deger);

?>
Markus Ernst
18 年前
plemieux 的函数在我没有将编码传递给每个 mb 函数的情况下无法正常工作(尽管脚本开头有 ini_set('default_charset', 'utf-8'))。这是在我的应用程序(PHP 4.3)中有效的示例

<?php
function my_mb_ucfirst($str, $e='utf-8') {
$fc = mb_strtoupper(mb_substr($str, 0, 1, $e), $e);
return
$fc.mb_substr($str, 1, mb_strlen($str, $e), $e);
}
?>
svetoslavm at gmail dot com
15 年前
不知为何,这对我有用。

Mac OS 10.5.1
PHP 5.2.6

<?php
/**
* ucfirst UTF-8 兼容函数
*
* @param string $string
* @return string
* @see http://ca.php.net/ucfirst
*/
function my_ucfirst($string, $e ='utf-8') {
if (
function_exists('mb_strtoupper') && function_exists('mb_substr') && !empty($string)) {
$string = mb_strtolower($string, $e);
$upper = mb_strtoupper($string, $e);
preg_match('#(.)#us', $upper, $matches);
$string = $matches[1] . mb_substr($string, 1, mb_strlen($string, $e), $e);
} else {
$string = ucfirst($string);
}
return
$string;
}
?>

斯维托斯拉夫·马里诺夫
http://slavi.biz
bgschool
15 年前
用于对 UTF-8 编码的西里尔文本使用 ucfirst 的简单函数

<?php
public function capitalize_first($str) {
$line = iconv("UTF-8", "Windows-1251", $str); // 转换为 windows-1251
$line = ucfirst($line);
$line = iconv("Windows-1251", "UTF-8", $line); // 转换回 utf-8

return $line;
}
?>
wilfried dot loche at fr dot adp dot com
14 年前
如果有人在寻找 Oracle 数据库的等效函数,那就是 INITCAP。希望对您有所帮助!
webmaster at onmyway dot cz
16 年前
受 lcfirst 函数的启发,一个简单的 mb_lcfirst 用于处理多字节字符串

<?php
function mb_lcfirst($str, $enc = null)
{
if(
$enc === null) $enc = mb_internal_encoding();
return
mb_strtolower(mb_substr($str, 0, 1, $enc), $enc).mb_substr($str, 1, mb_strlen($str, $enc), $enc);
}
?>
adefoor at gmail dot com
17 年前
Ken 和 zee

我会做的一件事是,为了让这个函数更加通用,在你的 $sentence 变量周围添加 strtolower()。这样做允许你转换全大写文本块以及全小写文本块。

<?php

function sentence_cap($impexp, $sentence_split) {
$textbad=explode($impexp, $sentence_split);
$newtext = array();
foreach (
$textbad as $sentence) {
$sentencegood=ucfirst(strtolower($sentence));
$newtext[] = $sentencegood;
}
$textgood = implode($impexp, $newtext);
return
$textgood;
}

$text = "this is a sentence. this is another sentence! this is the fourth sentence? no, this is the fourth sentence.";
$text = sentence_cap(". ",$text);
$text = sentence_cap("! ",$text);
$text = sentence_cap("? ",$text);

echo
$text; // This is a sentence. This is another sentence! This is the fourth sentence? No, this is the fourth sentence.

?>
Markus Ernst
18 年前
将下面函数组合起来,使能在共享主机环境(无法始终依赖于 mbstring 的安装)中对多字节字符串启用 ucfirst

<?php
function my_mb_ucfirst($str, $e='utf-8') {
if (
function_exists('mb_strtoupper')) {
$fc = mb_strtoupper(mb_substr($str, 0, 1, $e), $e);
return
$fc.mb_substr($str, 1, mb_strlen($str, $e), $e);
}
else {
$str = utf8_decode($str);
$str[0] = strtr($str[0],
"abcdefghýijklmnopqrstuvwxyz".
"\x9C\x9A\xE0\xE1\xE2\xE3".
"\xE4\xE5\xE6\xE7\xE8\xE9".
"\xEA\xEB\xEC\xED\xEE\xEF".
"\xF0\xF1\xF2\xF3\xF4\xF5".
"\xF6\xF8\xF9\xFA\xFB\xFC".
"\xFE\xFF",
"ABCDEFGHÝIJKLMNOPQRSTUVWXYZ".
"\x8C\x8A\xC0\xC1\xC2\xC3\xC4".
"\xC5\xC6\xC7\xC8\xC9\xCA\xCB".
"\xCC\xCD\xCE\xCF\xD0\xD1\xD2".
"\xD3\xD4\xD5\xD6\xD8\xD9\xDA".
"\xDB\xDC\xDE\x9F");
return
utf8_encode($str);
}
}
?>
info [at] spwdesign [dot] com
19 年前
这是一个从文本中获取所有存储在数据库中的“脏话”的简单代码。你可以使用 str_ireplace,但由于它只在 PHP5 中安装,因此此代码也能工作。它首先将文本转换为小写,然后在它认为应该放置大写字母的地方(新句子的开头)使用 ucfirst() 放置大写字母,前一句以 '. ' 结束。

<?php
function filter($text){
$filters=mysql_query("SELECT word,result FROM filter");
while(
$filter=mysql_fetch_array($filters)){
$text=str_replace($filter[word],$filter[result],strtolower($text));
$parts=explode(". ",$text);
for(
$i=0;$i<count($parts);$i++){
$parts[$i]=ucfirst($parts[$i]);
}
$text=implode(". ",$parts);
}
return
$text;
}
?>
匿名
19 年前
啊,最后一段代码被破坏了,这是修复后的代码

<?php

function uc_first($str){
$str[0] = strtr($str,
"abcdefghijklmnopqrstuvwxyz".
"\x9C\x9A\xE0\xE1\xE2\xE3".
"\xE4\xE5\xE6\xE7\xE8\xE9".
"\xEA\xEB\xEC\xED\xEE\xEF".
"\xF0\xF1\xF2\xF3\xF4\xF5".
"\xF6\xF8\xF9\xFA\xFB\xFC".
"\xFD\xFE\xFF",
"ABCDEFGHIJKLMNOPQRSTUVWXYZ".
"\x8C\x8A\xC0\xC1\xC2\xC3\xC4".
"\xC5\xC6\xC7\xC8\xC9\xCA\xCB".
"\xCC\xCD\xCE\xCF\xD0\xD1\xD2".
"\xD3\xD4\xD5\xD6\xD8\xD9\xDA".
"\xDB\xDC\xDD\xDE\x9F");
return
$str;
}

?>

所以,此函数也会将其他字母改为大写,而 ucfirst() 仅会将 a-z 更改为 A-Z。
steven at tux dot appstate dot edu
20 年前
注意:此函数的返回值在版本 4.3 中发生了变化,当传递一个长度为 0 的字符串时。在 <4.2 中返回 false,而在 >4.3 中返回一个长度为 0 的字符串。

示例

$name = ucfirst("");
var_dump($name);

$name = ucfirst("owen");
var_dump($name);

<4.2 的结果
bool(false) string(4) "Owen"

>4.3 的结果
string(0) "" string(4) "Owen"
Ami Hughes (ami at mistress dot name)
20 年前
如果你需要对多个分隔符应用相同的操作,你可以使用 preg_replace 来将这个 "第二个分隔符" 括在你的实际分隔符中。

例如,如果你想在为全名设计的输入框中使用类似 Lee 的 FormatName 函数,因为这个脚本只设计用来检查姓氏,就像它是整个字符串一样。问题是,你仍然想要支持双姓,并且你仍然想要支持如果双姓的第二部分以 "mc" 开头,它仍然会被正确格式化。

这个例子做了一个 preg_replace,它将分隔符用你的实际分隔符包围起来。这只是一个快速替代方案,可以用来编写一些更大更复杂的 blah-blah 函数。如果有一个更短、更简单的方法,请告诉我。(重点是更短和更简单,因为这就是目的。) :D

以下是示例。我删除了 Lee 的注释,以免与我的注释混淆。

<?php

function FormatName($name=NULL)
{
if (empty(
$name))
return
false;

$name = strtolower($name);
$name = preg_replace("[\-]", " - ",$name); // 将连字符用我们的分隔符包围起来,这样我们的 strncmp 就会准确无误
if (preg_match("/^[a-z]{2,}$/i",$name)) // 简单 if 语句
{

$names_array = explode(' ',$name); // 将分隔符设置为空格。

for ($i = 0; $i < count($names_array); $i++)
{
if (
strncmp($names_array[$i],'mc',2) == 0 || ereg('^[oO]\'[a-zA-Z]',$names_array[$i]))
{
$names_array[$i][2] = strtoupper($names_array[$i][2]);
}
$names_array[$i] = ucfirst($names_array[$i]);

}

$name = implode(' ',$names_array);
$name = preg_replace("[ \- ]", "-",$name); // 删除多余的分隔符实例
return ucwords($name);

}
}

?>
bkimble at ebaseweb dot com
21 年前
这是一个方便的函数,可以将句子中所有内容的首字母大写。我用它来处理发布在我的网站上的事件标题......我添加了对大写单词和小写单词的例外,所以罗马数字 "IV" 不会被打印为 "iv",而 "a"、"the" 和 "of" 这样的词会保持小写。

function RemoveShouting($string)
{
$lower_exceptions = array(
"to" => "1", "a" => "1", "the" => "1", "of" => "1"
);

$higher_exceptions = array(
"I" => "1", "II" => "1", "III" => "1", "IV" => "1",
"V" => "1", "VI" => "1", "VII" => "1", "VIII" => "1",
"XI" => "1", "X" => "1"
);

$words = split(" ", $string);
$newwords = array();

foreach ($words as $word)
{
if (!$higher_exceptions[$word])
$word = strtolower($word);
if (!$lower_exceptions[$word])
$word = ucfirst($word);
array_push($newwords, $word);

}

return join(" ", $newwords);
}
Nethor
11 年前
简单但可行的解决方案

<?php
mb_internal_encoding
("UTF-8"); // 在调用函数之前

function utf8_ucfirst($str){
preg_match_all("~^(.)(.*)$~u", $str, $arr);
return
mb_strtoupper($arr[1][0]).$arr[2][0];
}
?>
Ken Kehler
17 年前
@ zee: 这应该可以解决你的 !、? 和你想要添加的任何标点符号。它可能可以清理一点。

<?php

function sentence_cap($impexp, $sentence_split) {
$textbad=explode($impexp, $sentence_split);
$newtext = array();
foreach (
$textbad as $sentence) {
$sentencegood=ucfirst($sentence);
$newtext[] = $sentencegood;
}
$textgood = implode($impexp, $newtext);
return
$textgood;
}

$text = "this is a sentence. this is another sentence! this is the fourth sentence? no, this is the fourth sentence.";
$text = sentence_cap(". ",$text);
$text = sentence_cap("! ",$text);
$text = sentence_cap("? ",$text);

echo
$text; // This is a sentence. This is another sentence! This is the fourth sentence? No, this is the fourth sentence.

?>
Uwe
17 年前
@adefoor、Ken 和 Zee

只有理解文本才能进行大小写转换。例如,"USA"、"Sunday"、"March"、"I am..."、缩写词如 "prob." 等等。
Anonymous
17 年前
一些简单的西里尔字母和拉丁字母函数

function rucfirst($str) {
if(ord(substr($str,0,1))<192) return ucfirst($str);
else
return chr(ord(substr($str,0,1))-32).substr($str,1);
}
Michael
17 年前
这就是你希望 php 在有一个名为 ucsentence 的内置函数时提供的功能。

function ucsentence ($string){
$string = explode ('.', $string);
$count = count ($string);
for ($i = 0; $i < $count; $i++){
$string[$i] = ucfirst (trim ($string[$i]));
if ($i > 0){
$string[$i] = '&nbsp;&nbsp;' . $string[$i];
}
}
$string = implode ('.', $string);
return $string;
}
idont at remember dot it
12 年前
如果你需要一个法语版本的 ucfirst

"été indien" => "Eté indien"
"ça va?" => "Ça va?"

<?php
function frenchUcfirst($v) {
$lowCase = "\\xE0\\xE1\\xE2\\xE3\\xE4\\xE5\\xE7\\xE8\\xE9\\xEA\\xEB\\xEC\\xED\\xEE\\xEF";
$lowCase .= "\\xF1\\xF2\\xF3\\xF4\\xF5\\xF6\\xF8\\xF9\\xFA\\xFB\\xFC\\xFD\\xFF\\u0161";
$upperCase = "AAAAAA\\xC7EEEEIIIINOOOOOOUUUUYYS";
return
strtoupper(strtr(substr($v, 0, 1), $lowCase, $upperCase)) . substr($v, 1);
}
?>

注意
- 拉丁语非法语重音字符遵循相同的规则
"ändå" => "Andå"
- 函数中的非 ASCII 字符采用十六进制格式,以避免编码问题...
divinity76 at gmail dot com
4 年前
以下是如何在用户空间实现 mb_ucfirst 的方法

<?php

function mb_ucfirst(string $str, string $encoding = null): string
{
if (
$encoding === null) {
$encoding = mb_internal_encoding();
}
return
mb_strtoupper(mb_substr($str, 0, 1, $encoding), $encoding) . mb_substr($str, 1, null, $encoding);
}
?>

(当我写这条评论时,其他所有人的尝试都因为这样或那样的原因而失败了,例如:有些人不允许你指定编码,有些人默认为 utf-8 而不是默认为 mb_internal_encoding() )
To Top