逍遥一派 发表于 2015-2-4 00:08:22

PHP编程:PHP中字体使用释疑

即使你理解不了PHP,但是也必须先跟它混个脸熟,看,一遍遍的看,看的同时一边琢磨,一边按照它所教的打代码,即使你搞不清楚那些代码到底是干嘛的,但是起码你应该找找感觉。   综述:有很多伴侣对网站供应繁、简两种版本感应很猜疑,是怎样完成的呢?这也是时下浩瀚PHP书本中被漏失落的一个很主要的常识点。笔者汇集收拾整顿并依据本人的开辟经历将一些重点与疑点枚举出来与人人同享!   若何使用繁体中文转换为简体中文的PHP函数?
  咱们界说一个big5togb的函数来完成这个转换:
function big5togb($code)
{
//参数$code是big5码的字符串
include "data_big5.php"; //包括big5数据的文件
$output="";
$length=strlen($code); //获得字符串长度
$code=strtok($code,"");
$idx=0;
while ($idx < $length)
{
$tmpStr=$code[$idx].$code[$idx+1];
if (isbig5($tmpStr)) //判别是不是big5码
{
……//假如是big5码则停止转换后输入
}
else
{
$output.= $code[$idx]; //假如不是big5码则直接输入
}
$idx++;
}
return ($output);
}
  若何使用简体中文转换为繁体中文的PHP函数?
  若何用PHP将简体中文转换为繁体中文?
  咱们界说一个big5togb的函数来完成这个转换:
function gbtobig5($code)
{
include "data_gb.php"; //包括有gb码的数据文件
$output="";
$length=strlen($code);
$code=strtok($code,"");
$idx=0;
while ($idx < $length)
{
$tmpStr=$code[$idx].$code[$idx+1];
if (isgb($tmpStr)) //判别是不是gb码
{
……//假如是gb码转换后输入
}
else
{
$output.= $code[$idx]; //不是gb码则直接输入
}
$idx++;
}
return ($output);
}
  在简繁体转换中如何使用PHP输入掌握功效?
  PHP输入掌握功效是如何一回事?
  PHP的输入信息掌握函数可让你掌握你的剧本输入的内容,可以用于很多分歧的情形,出格是在你的剧本已输入信息后需求发送文件头的情形和需求对输入信息停止编纂处置的中央。输入掌握函数不合错误利用header()或setcookie()发送的文件头信息发生影响,只对那些相似于echo()、print() 和 PHP 代码的数据块有感化。
  例 1. 掌握输入
test.php
<?
function test($str){
return str_replace("world","php",$str);
}
ob_start("test");
echo "hello world";
ob_end_flush();
?>
  这个法式在没有输入信息掌握的情形下应当输入为
hello world
  但经由过程指定了输入掌握函数后,输入变成
hello php
  在下面的例子中,利用echo()的输入内容将会保留在输入缓冲区中,直到挪用了ob_end_flush()或剧本运转终止,然后输入信息由自界说的处置函数停止处置(交换外面的字符串)并前往了局。
  相干函数申明:
  void ob_start()- 翻开输入缓冲区
  一切的输入信息不在直接发送到阅读器,而是保留在输入缓冲区外面,可选得回调函数用于处置输入了局信息。
  void ob_end_flush(void) - 停止(发送)输入缓冲区的内容,封闭输入缓冲区
  简繁体转换若何完成?
  简繁转换普通经由过程对比表的模式完成,咱们这里只给出其完成代码个中:
<?php
function gb2big5($str) {
global $_gb_big5_;
$leng = strlen($str)-1;
for($i = 0; $i<$leng; $i++){
$h = ord($str[$i]);
if($h>=160){
$l = ord($str[$i+1]);
$gb=($h==161 && $l==64)?" " : substr($_gb_big5_, ($h-160)*510+($l-1)*2, 2);
$str[$i] = $gb;
$str[$i+1] = $gb;
$i++;
}
}
return $str;
}
?>
  $gb_big5_ 保留着big5 的字库对比表
  $str 为要转化的字符串

4 big5 字库的保留的改善办法

  可使用 session 来保留 big5 字库,但利用后速度会分明减慢,次要由于 session 也是经由过程文件模式完成,所以不会对功能发生进步,并且由于session 不会依据简繁体标记主动判别装载与否,所以形成在简体下也装载了 big5 的字库,所以形成速度减慢。

  假如办事器为 linux 可以思索利用同享内存来保留 big5 字库信息。其更改的代码为require.php 的判别局部:

<?
if(session_is_registered("big5") && ($big5==1))
{
// 修正成利用同享内存
// 判别是不是已创立,翻开50000字节的 0xff3 段的同享内存
$shm_id = @shmop_open(0xff3, "a", 0644, 50000);
if($shm_id) {
$_gb_big5_ = shmop_read($shm_id, 0,shmop_size($shm_id)); // 读出big5 数据
}
else{
// 创立 50000 字节的体系标识为 0xff3 的同享内存块
$shm_id = @shmop_open(0xff3, "c", 0644, 50000);

// 读出数据
$fp = fopen('big5.table', 'r');
$_gb_big5_ = fread($fp, filesize('big5.table'));
fclose($fp);

if($shm_id){
$shm_bytes_written = shmop_write($shm_id, $_gb_big5_,0); // 写入 big5 数据
}
}
ob_start('translate_gb2big5');
}
?>
  若何分离全角和半角以免乱码?

  咱们可以写如许一个函数来完成:

function ChgTitle($title)
{
$length = 46; //咱们答应字符串显示的最大长度
if (strlen($title)>$length) {
$temp = 0;
for($i=0; $i<$length; $i++)
if (ord($title[$i]) > 128) $temp++;
if ($temp%2 == 0)
$title = substr($title,0,$length)."...";
else
$title = substr($title,0,$length+1)."...";
}
return $title;
}
  这个函数道理就是截断一个字符,看看其ascII码是否是大于128,假如是,申明截断的是一个全角汉字,那末就退后一个截断。用$length掌握长度

  备注:轮回判别字符串外面的 >128 的字符个数,假如半角字符为偶数,则暗示地位恰好为全部汉字,假如为奇数,则为半个汉字,需求取下一个字符
最近陆续的有人问我学习php的心得,现在整理为下面,希望可以对大家有些帮助。

若天明 发表于 2015-2-4 09:20:23

刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。

再现理想 发表于 2015-2-5 11:52:37

本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。

简单生活 发表于 2015-2-11 15:50:33

作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。

admin 发表于 2015-2-18 19:30:27

建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。

柔情似水 发表于 2015-3-6 09:08:25

学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。

老尸 发表于 2015-3-12 16:37:47

兴趣是最好的老师,百度是最好的词典。

只想知道 发表于 2015-3-15 02:03:16

php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。

兰色精灵 发表于 2015-3-17 12:09:55

没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。

灵魂腐蚀 发表于 2015-3-22 02:09:20

多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。

逍遥一派 发表于 2015-3-23 20:52:50

找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。

莫相离 发表于 2015-3-27 12:10:53

曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线\\\\\\\'_\\\\\\\' ;

海妖 发表于 2015-4-6 10:52:10

本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。

第二个灵魂 发表于 2015-4-7 20:11:27

开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。

透明 发表于 2015-5-7 04:57:24

要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。

愤怒的大鸟 发表于 2015-5-9 05:56:19

有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。

活着的死人 发表于 2015-5-11 15:19:33

php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。

精灵巫婆 发表于 2015-6-12 00:46:13

建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。

变相怪杰 发表于 2015-7-3 16:54:28

这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。

小魔女 发表于 2015-7-9 23:24:16

学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
页: [1]
查看完整版本: PHP编程:PHP中字体使用释疑