php中文 php在线
大家好,今天给各位分享php中文的一些知识,其中也会对php在线进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
PHP中文编码~~
一、页面编码
1.使用<META http-equiv="content-type" content="text/html; charset=xxx">标签设置页面编码
这个标签的作用是声明客户端的浏览器用什么字符集编码显示该页面,xxx可以为GB2312,GBK,UTF-8(和MySQL不同,MySQL是 UTF8)等等。因此,大部分页面可以采用这种方式来告诉浏览器显示这个页面的时候采用什么编码,这样才不会造成编码错误而产生乱码。但是有的时候我们会发现有了这句还是不行,不管xxx是哪一种,浏览器采用的始终都是一种编码,这个情况我后面会谈到。
请注意,<meta>是属于html信息的,仅仅是一个声明,它起作用表明服务器已经把HTML信息传到了浏览器。
2. header("content-type:text/html; charset=xxx");
这个函数header()的作用是把括号里面的信息发到http标头。
如果括号里面的内容为文中所说那样,那作用和<META>标签基本相同,大家对照第一个看发现字符都差不多的。但是不同的是如果有这段函数,浏览器就会永远采用你所要求的xxx编码,绝对不会不听话,因此这个函数是很有用的。为什么会这样呢?那就得说说HTTPS标头和HTML信息的差别了:
https标头是服务器以HTTP协议传送HTML信息到浏览器前所送出的字串。
因为meta标签是属于html信息的,所以header()发送的内容先到达浏览器,通俗点就是header()的优先级高于meta(不知道可不可以这样讲)。加入一个php页面既有header("content-type:text/html; charset=xxx"),又有<META http-equiv="content-type" content="text/html; charset=xxx">,浏览器就只认前者http标头而不认meta了。当然这个函数只能在php页面内使用。
同样也留有一个问题,为什么前者就绝对起作用,而后者有时候就不行呢?这就是接下来要谈的Apache的原因了。
3. AddDefaultCharset
Apache根目录的 conf文件夹里,有整个Apache的配置文档httpd.conf。
用文本编辑器打开httpd.conf,第708行(不同版本可能不同)有AddDefaultCharset xxx,xxx为编码名称。这行代码的意思:设置整个服务器内的网页文件https标头里的字符集为你默认的xxx字符集。有这行,就相当于给每个文件都加了一行header("content-type:text/html; charset=xxx")。这下就明白为什么明明meta设置了是utf-8,可浏览器始终采用gb2312的原因。
如果网页里有header("content-type:text/html; charset=xxx"),就把默认的字符集改为你设置的字符集,所以这个函数永远有用。如果把AddDefaultCharset xxx前面加个“#”,注释掉这句,而且页面里不含header("content-type…"),那这个时候就轮到meta标签起作用了。
4. default_charset
在 php.ini文件中可以定义 php的默认语言: default_charset="xxx",xxx为编码名称。这行代码的意思是设置所有 php的输出页面编码为 xxx。
以上 4种编码设置方法的优先级如下:
header("content-type:text/html; charset=xxx")
default_charset xxx
AddDefaultCharset xxx
<META http-equiv="content-type" content="text/html; charset=xxx">
如果你是web程序员,给你的每个页面都加个header("content-type:text/html; charset=xxx"),保证它在任何服务器都能正确显示,可移植性强。
至于那句AddDefaultCharset xxx,要不要注释就仁者见仁了。反正我是注释掉了,不过我写页子也要写header(),便于放到服务器上能正常显示。
二、数据库编码
PHP程序在查询数据库之前,首先执行 mysql_query(“SET NAMES xxxx”);其中 xxxx是你网页的编码(charset=xxxx),如果网页中 charset=utf8,则 xxxx=utf8,如果网页中 charset=gb2312,则xxxx=gb2312,几乎所有WEB程序,都有一段连接数据库的公共代码,放在一个文件里,在这文件里,加入mysql_query(“set names”)就可以了。
SET NAMES显示客户端发送的 SQL语句中使用什么字符集。因此,SET NAMES'utf-8'语句告诉服务器“将来从这个客户端传来的信息采用字符集utf-8”。它还为服务器发送回客户端的结果指定了字符集。(例如,如果你使用一个SELECT语句,它表示列值使用了什么字符集。)
三、中文文件名
默认情况下,文件名为中文时不能访问。要使中文文件名能正常访问,需进行如下设置:
在ie中选择工具-> internet选项->高级->取消“总是以UTF-8发送URL”。
php如何截取中文
在PHP中截取中文字符串时,由于中文字符属于多字节字符(UTF-8编码下每个汉字占3字节),直接使用单字节函数(如substr())可能导致乱码或截断不完整。以下是三种常用方法及注意事项:
方法1:mb_substr()(推荐)功能:专为多字节字符串设计,支持指定编码,安全可靠。参数:
$string:待截取的字符串$start:起始位置(从0开始)$length:截取的字符数(非字节数)$encoding(可选):字符串编码(默认UTF-8)示例:
$string="中文字符串测试";$result= mb_substr($string, 0, 3,'UTF-8');echo$result;//输出:中文字优点:
直接按字符截取,避免乱码。支持多种编码(如GBK、UTF-8等)。方法2:iconv_substr()功能:在截取前可转换字符串编码,适合需要编码转换的场景。参数:
$string:待截取的字符串$start:起始位置$length:截取的字节数(注意与字符数的区别)$encoding:源编码$target_encoding(可选):目标编码(默认UTF-8)示例:
$string= iconv('UTF-8','GBK',"中文字符串测试");$result= iconv_substr($string, 0, 6,'GBK');echo iconv('GBK','UTF-8',$result);//输出:中文字注意:
需明确源编码和目标编码,否则可能乱码。$length参数为字节数,需根据编码计算(如GBK中每个汉字占2字节)。方法3:substr()(不推荐)风险:默认按字节截取,可能截断多字节字符导致乱码。示例:
$string="中文字符串测试";$result= substr($string, 0, 3); echo$result;//可能输出乱码(如"中?")适用场景:
仅当字符串为单字节编码(如ASCII)时可用。关键注意事项编码一致性:
确保字符串存储的编码与函数指定的编码一致(如UTF-8)。
数据库或文件读取时需检查编码设置。
字符串长度判断:
使用mb_strlen()获取字符数,而非strlen()(后者返回字节数)。
$len= mb_strlen("中文",'UTF-8');//返回2性能考虑:
mb_substr()是通用解决方案,但若确定编码为GBK且无需转换,iconv_substr()可能更快。
总结建议优先使用mb_substr():简单、安全,支持多编码。避免直接使用substr()处理中文。编码转换时谨慎使用iconv_substr(),确保参数正确。通过正确选择函数和编码处理,可高效避免中文截取时的乱码问题。
php有几种开发语言
php有几种开发语言?
php的启发语言有五种,分别是C、Perl、Java、C++、Python。
PHP(全称:PHP:Hypertext Preprocessor,即“PHP:超文本预处理器”)是一种开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入HTML中使用。PHP的语法借鉴吸收C语言、Java和Perl等流行计算机语言的特点,易于一般程序员学习。PHP的主要目标是允许网络开发人员快速编写动态页面,但PHP也被用于其他很多领域。
PHP最初是由勒多夫在1995年开始开发的;现在PHP的标准由the PHP Group维护。PHP以PHP License作为许可协议,不过因为这个协议限制了PHP名称的使用,所以和开放源代码许可协议GPL不兼容。
PHP的应用范围相当广泛,尤其是在网页程序的开发上。一般来说PHP大多运行在网页服务器上,透过运行PHP代码来产生用户浏览的网页。PHP可以在多数的服务器和操作系统上运行,而且使用PHP完全是免费的。根据2013年4月的统计数据,PHP已经被安装在超过2亿4400万个网站和210万台服务器上。
PHP在Windows上有专门的官方移植编译项目,并且分多个VC编译器版本和线程安全特性来提供不同的版本支持。
更多PHP相关知识,请访问PHP中文网!
文章到此结束,如果本次分享的php中文和php在线的问题解决了您的问题,那么我们由衷的感到高兴!