手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表分类:PHP

PHP全角标点转为半角

 

PHP代码
  1. <?php   
  2. $str = "0123ABCDFWS\",.?<>{}[]*&^%#@!~()+-|:;";   
  3. echo "$str";   
  4. echo "<br>";   
  5. $str = preg_replace('/\xa3([\xa1-\xfe])/e''chr(ord(\1)-0x80)'$str);   
  6. echo $str;   
  7. ?>  

这是网上看来的代码,最初我想着,反正标点就那么多,直接用数组啥的替换一下就完事了。看了这个函数之后,发现自己了解的太少了。或者说自己的思路太狭隘了,从没有往深处这么想。看来所有的中文标点的第二个字节减去0X80(即128)所得的数字就是半角所得的数字了。而/e模式表达的是:如果设定了此修正符,preg_replace() 在替换字符串中对逆向引用作正常的替换,将其作为 PHP 代码求值,并用其结果来替换所搜索的字符串。

stdClass的介绍

在PHP开发中,很多时候都会看到别人的代码里有 
 
$user = new stdClass();
$user->name 'gouki';
这样的代码,这是干嘛用的呢?
翻开手册,搜索stdClass,你会发现,手册上几乎没有介绍,如果你再次搜索google,看到的也几乎全是英文解释。
其实,stdClass在PHP5才开始被流行。而stdClass也是zend的一个保留类。似乎没有其他作用。也几乎没有任何说明。

或者,我们可以这么理解:stdClass是PHP的一个基类,所有的类几乎都继承这个类,所以任何时候都可以被new,可以让这个变量成为一个object。同时,这个基类又有一个特殊的地方,就是没有方法。
凡时用new stdClass()的变量,都不可能会出现$a->test()这种方式的使用。

或者,我们可以又这么理解一下,正因为PHP5的对象的独特性,对象在任何地方被调用,都是引用地址型的,所以相对消耗的资源会少一点。在其它页面为它赋值时是直接修改,而不是引用一个拷贝。
例如:
$user = new stdClass();
$user->name 'gouki';
$myUser $user;
$myUser->name 'flypig';
 
如果在PHP4时代,这样的代码就是在消耗系统资源。因为:
$myUser = $user;
这是创建了一个拷贝。所以,在PHP4的时候,都是这样使用:
$myUser = & $user;

有人说,为什么不用数组呢?数组不是更方便吗?而且对于PHP这样的弱类型程序来说,用数组应该是最方便的。
确实。数组在程序的使用中应该是最方便的,然而数组的每次被引用($a = $b),其实都是创建了一个副本,而且,数组被unset后,还是占用了内存(这个是听人说来的,我没有测试……也不知道怎么测试,如果有人知道,请告诉我,谢谢 )
不过SPL的标准类库里,还有一个函数arrayobject,可以直接将数组转化为对象这也是一个好办法哦。

随便写写,没有打草稿,如果有错误,请通知我改正……

Tags: stdclass

ThinkPHP的官方服务器遭受攻击

ThinkPHP的官方服务器受到了攻击,数据全部丢失。在等待服务器恢复的期间,听说服务器还是拖了时间才开始安装和配置啥的。

其实,个人而言,我是不太相信是受到了攻击。以前托管的时候,由于机房搬迁,而他们的管理人员机器都不关就直接换机柜什么的,导致我的硬盘在读写的时候断电,分区表完全破坏。足足停了两个多月。

也正是那两个多月,团队进行的项目受到了一定的打击,也就是俗话说的:心都哇凉哇凉的。

自此,团队一蹶不振。

当然希望TP不是因为这个原因。唉……合租的服务器,终究还是不放心啊。可惜TP没有营利性的运作,仍然是以个人名义在运作。不可避免的会与自己的经济能力挂勾吧。其实,买一台1U服务器,托管1年。大概费用是15000左右(应该算是比较高的了),假设每年托管费用5000,托管3年的话。共计2W,平均每年6K,相信应该还是可以承受的(当然,如果有人赞助部分应该会更好,不过最好还是通过有偿技术支持等来换取部分贊助,也避免欠人情啥的)。

看TP的未来发展吧。拭目以待

闲来无聊,把所有的字符打印了一遍

PHP代码
  1. <?php   
  2. set_time_limit( 0 );   
  3. echo'<style>table{font-size: 9pt;}</style>' );   
  4. echo'<table width="100%" border=1>' );   
  5. echo'<tbody><tr>' );   
  6. for ( $i = 0; $i < 65535; $i++ ){   
  7.     if ( $i%20 == 0 ){   
  8.         echo'</tr><tr>' );   
  9.     }   
  10.     echo'<td width="5%">'.$i.'-&#' . $i . ';</td>'  );   
  11. }   
  12. echo'</tbody></table>' );   
  13. ?>  

打印完发现,中文基本上从19968开始,40869就结束了。 共计20901个汉字。

这个是不管你是什么编码都会正确显示的哦。哈哈

Tags: ascii

PHP学习(二)之详解PHP字符串三种定义方式

任何一门语言,最重要的往往都是由:基本语法、类型、各种变量常量、表达式、运算符、控制结构、函数(对象、异常处理)等组成。在学习PHP的过程中,我也将逐步为以上的内容的学习作一概要,当然,首推还是手册,基本以介绍手册为主。

» 阅读全文