php字符串utf
⑴ 怎样设置php的编码格式为utf-8
在 PHP 编写过程中,一般需要注意的是三种编码:
1、网页字符编码
2、文件字符编码
3、数据库字符编码
只有上面3种编码的格式都一致的情况下,才会尽可能的避免乱码的出现。
二、如何使用Notepad++软件设置UTF-8编码:
用 Notepad++ 软件打开指定的 php 文档后,在“格式”菜单下找到“以UTF-8格式编码"
以xxx编码的意思是不强制转换文件的编码,仅仅以某种编码来查看,不会对文件进行修改,这对打开某个文件发现都是乱码时非常实用。
转为xxx编码的意思就是将文件内容强制转换为某种编码,这对于本来看到的就不是乱码但需要调整右下角的文件编码时非常好用。
⑵ php 字符串为utf8怎么判断为空
php判断字符串是否为空,用到的工具:notepad++,步骤如下:
1.
<?php
$a='0';
$b='';
$c=array();
$d='abcdef'
if(empty($a))echo'$a为空'."<br/>";
if(empty($b))echo'$b为空'."<br/>";
if(empty($c))echo'$c为空'."<br/>";
if(empty($d))echo'$d为空';
?>
说明:empty就是判断字符串是否为空。
2.输出结果:$a为空,$b 为空,$c 为空。
注意事项:empty 可以将值为 "假"、"空"、"0"、"NULL"、"未初始化" 的变量都判断为TRUE,判断字符串是否为空还有isset函数可用,用法类似。
⑶ 在php中,怎样把字符串转为UTF-8字节数组
设置编码utf-8
mysql_query('set
names
utf8');
或者是
header("content-type:
text/html;
charset=utf-8");
这个放在头部(之前不能有输出)
⑷ php截取字符串之截取utf8或gbk编码的中英文字符串示例
php中自带strlen是返回的字节数,对于utf8编码的中文返回时3个,不满足需求,下面给大家提供一个方法来完成这样的功能
微博的发言有字数限制,其计数方式是,中文算2个,英文算1个,全角字符算2个,半角字符算1个。
php中自带strlen是返回的字节数,对于utf8编码的中文返回时3个,不满足需求。
mb_strlen
可以根据字符集计算长度,比如utf8的中文计数为1,但这不符合微博字数限制需求,中文必须计算为2才可以。
google了下,找到一个discuz中截取各种编码字符的类,改造了下,已经测试通过.其中参数$charset
只支持gbk与utf-8。
代码如下:
$a
=
"s@@你好";
var_mp(strlen_weibo($a,'utf-8'));
结果输出为8,其中字母s计数为1,全角@计数为2,半角@计数为1,两个中文计数为4。源码如下:
代码如下:
function
strlen_weibo($string,
$charset='utf-8')
{
$n
=
$count
=
0;
$length
=
strlen($string);
if
(strtolower($charset)
==
'utf-8')
{
while
($n
<
$length)
{
$currentByte
=
ord($string[$n]);
if
($currentByte
==
9
||
$currentByte
==
10
||
(32
<=
$currentByte
&&
$currentByte
<=
126))
{
$n++;
$count++;
}
elseif
(194
<=
$currentByte
&&
$currentByte
<=
223)
{
$n
+=
2;
$count
+=
2;
}
elseif
(224
<=
$currentByte
&&
$currentByte
<=
239)
{
$n
+=
3;
$count
+=
2;
}
elseif
(240
<=
$currentByte
&&
$currentByte
<=
247)
{
$n
+=
4;
$count
+=
2;
}
elseif
(248
<=
$currentByte
&&
$currentByte
<=
251)
{
$n
+=
5;
$count
+=
2;
}
elseif
($currentByte
==
252
||
$currentByte
==
253)
{
$n
+=
6;
$count
+=
2;
}
else
{
$n++;
$count++;
}
if
($count
>=
$length)
{
break;
}
}
return
$count;
}
else
{
for
($i
=
0;
$i
<
$length;
$i++)
{
if
(ord($string[$i])
>
127)
{
$i++;
$count++;
}
$count++;
}
return
$count;
}
}
⑸ PHP中如何把一个字符串转换为utf-8编码的 如题 谢谢了
1、把 GBK 编码字串转换成 UTF-8 编码字串 view plain to clipboardprint? <?php header("content-Type: text/html; charset=Utf-8"); echo mb_convert_encoding("你是我的好朋友","UTF-8","GBK"); ?> 2、把 UTF-8 编码字串转换成 GB2312 编码字串 view plain to clipboardprint? // 注意将此文件存盘成 utf-8 编码格式文件再测试 <?php header("content-Type:text/html;charset=gb2312"); echo mb_convert_encoding("你是我的好朋友","gb2312","utf-8"); ?> // 注意将此文件存盘成 utf-8 编码格式文件再测试 <?php header("content-Type: text/html; charset=gb2312"); echo mb_convert_encoding("你是我的好朋友","gb312","utf-8"); ?> 3、对整个页面进行转换 该方法适用所有编码环境。这样把前128个字符以外(显示字符)的字符集都用 NCR(Numeric character reference,如“汉字”将转换成“汉字”这种形式)来表示,这样的编码在任意编码环境下页面都能正常显示。 在php文件的头部加上下面三行代码: view plain to clipboardprint? mb_internal_encoding(”gb2312″); // 这里的gb2312是你网站原来的编码 mb_http_output(”HTML-ENTITIES”); ob_start(’mb_output_handler’); mb_internal_encoding(”gb2312″); // 这里的gb2312是你网站原来的编码 mb_http_output(”HTML-ENTITIES”); ob_start(’mb_output_handler’); 使用mb_convert_encoding 函数需启用PHP 的mbstring (multi-byte string)扩展
⑹ php 截取utf-8格式的字符串实例代码
php
截取utf-8格式的字符串
php中,我们经常需要截取字符串。英文字符占用一个字节,中文字符占用两个字节,但中文字符占用两个字节是相对于GBK编码而言但是在时下国际流行的UTF8编码中,一个中文字符占用3个字节。本文章向大家介绍一个php
截取utf-8格式字符串的函数。
举例说明:
function
truncate_utf8_string($string,
$length,
$etc
=
'...')
{
$result
=
'';
$string
=
html_entity_decode
(
trim
(
strip_tags
(
$string
)
),
ENT_QUOTES,
'UTF-8'
);
$strlen
=
strlen
(
$string
);
for($i
=
0;
(($i
<
$strlen)
&&
($length
>
0));
$i
++)
{
if
($number
=
strpos
(
str_pad
(
decbin
(
ord
(
substr
(
$string,
$i,
1
)
)
),
8,
'0',
STR_PAD_LEFT
),
'0'
))
{
if
($length
<
1.0)
{
break;
}
$result
.=
substr
(
$string,
$i,
$number
);
$length
-=
1.0;
$i
+=
$number
-
1;
}
else
{
$result
.=
substr
(
$string,
$i,
1
);
$length
-=
0.5;
}
}
$result
=
htmlspecialchars
(
$result,
ENT_QUOTES,
'UTF-8'
);
if
($i
<
$strlen)
{
$result
.=
$etc;
}
return
$result;
}
如果需要截取utf-8格式的字符串,直接调用这个函数即可。
<?php
$str="如果需要截取utf-8格式的字符串,直接调用这个函数即可。";
echo
truncate_utf8_string($str,10);//输出结果:如果需要截取utf-8格...
?>
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
⑺ php里面怎样把utf-8编码的字符串 (如 \u5e7f), 重新解码成中文,多谢
这种字符串是unicode编码的,而不是utf-8。json_decode()可以自动将json中的unicode字符串转换为utf-8。你可以自己构造一个json来实现。
12345<?php$str = '\u5e7f\u4e1c\u6df1\u5733';$json = '{"foo":"' . $str . '"}';$d = json_decode($json, true);$str = $d['foo']; // 这个就是你想要的
望采纳!
⑻ PHP如何获取中文字符串长度 utf8
PHP对中文字符串的处理一直困扰于刚刚接触PHP开发的新手程序员。下面简要的剖析一下PHP对中文字符串长度的处理:
PHP自带的函数如strlen()、mb_strlen()都是通过计算字符串所占字节数来统计字符串长度的,一个英文字符占1字节。例:
$enStr = ‘Hello,China!’;
echo strlen($enStr); // 输出:12
而中文则不然,做中文网站一般会选择两种编码:gbk/gb2312或是utf-8。utf-8能兼容更多的字符,所以受到很多站长的喜爱。gbk与utf-8对中文的编码不同,导致中文在gbk与utf-8编码下所占字节也有差异。
gbk编码下每个中文字符所占字节为2,例:
$zhStr = ‘您好,中国!’;
echo strlen($zhStr); // 输出:12
utf-8编码下每个中文字符所占字节为3,例:
$zhStr = ‘您好,中国!’;
echo strlen($zhStr); // 输出:18
那么如何计算这组中文字符串的长度呢?有人可能会说gbk下获取中文字符串长度除以2,utf-8编码下除以3不就行了吗?但是您要考虑字符串并不老实,99%的情况会以中英混合的情况出现。
这是WordPress中的一段代码,主要思想就是先用正则将字符串分解为个体单元,然后再计算单元的个数即字符串的长度,代码如下(只能处理utf-8编码下的字符串):
$zhStr = ‘您好,中国!’;
$str = ‘Hello,中国!’;
// 计算中文字符串长度
function utf8_strlen($string = null) {
// 将字符串分解为单元
preg_match_all(“/./us”, $string, $match);
// 返回单元个数
return count($match[0]);
}
echo utf8_strlen($zhStr); // 输出:6
echo utf8_strlen($str); // 输出:9
⑼ PHP完美判断字符串是否为utf
完美判断函数:
function is_utf8($gonten){if (preg_match(/^([.chr(228).-.chr(233).]{1}[.chr(128).-.chr(191).]{1}[.chr(128).-.chr(191).]{1}){1}/,$word) == true || preg_match(/([.chr(228).-.chr(233).]{1}[.chr(128).-.chr(191).]{1}[.chr(128).-.chr(191).]{1}){1}$/,$word) == true || preg_match(/([.chr(228).-.chr(233).]{1}[.chr(128).-.chr(191).]{1}[.chr(128).-.chr(191).]{1}){2,}/,$word) == true){return true;}else{return false;}}使用方法 is_utf8($gonten)就可以判断字符串$gonten是否为utf-8编码了。
网上流传着这样一个判断函数,其实这函数判断是不完整的,函数如下
function is_utf8($string) {
return preg_match('%^(?:
[\x09\x0A\x0D\x20-\x7E] # ASCII
| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15