拳不离手、曲不离口 - Speak with your code, my friend, not your word.

android发起HTTP Request给PHP,然后获得json数据,结果发生异常。

异常信息:A JSONObject text must begin with '{' at character 1...

原因:生成json的php文件编码格式为带BOM的UTF-8,导致获得的字符串数据不是以'{'为第一个字符。

解决办法:用notepad++或其它编辑器把格式改成不带BOM的UTF-8。

phpbb3源码分析-/includes/functions_module.php(v0.01)

 模板机制的核心文件就在这里啦。

继续阅读

phpbb3源码分析-基本概念和总体架构(强烈建议先读这篇)(v0.16)

BB

对phpbb3的简称。


Package

phpbb3共有16个package组成,这个不是java里那个package,并不是和文件系统中文件夹一一对应的。可以说bb3所有的文件都会放在这16个包中,更不用说是源码了。而这个分析专题是以源码文件为单位的,因此看的时候一定要注意这个文件是属于哪一个package,每个文件的开头都会标明这个文件是属于哪个package。

* phpBB3 - Core files and all files not assigned to a seperate package

说明:核心文件,理论上不属于任何一个package,不过你可以把它们看成是phpBB3 package里的。

 

* acm - Cache system (/includes/acm)

说明:Cache系统。

 

* acp - Administration Control Panel (/adm, /includes/acp)

* dbal - Database Abstraction Layer (/includes/db)

* diff - Diff Engine (/includes/diff)

* docs - phpBB documentation (/docs)

* images - All global images not connected to styles (/images)

* install - Installation system (/install)

* language - All language files (/language)

* login - Login authentication plugins (/includes/auth)

* visual confirmation - CAPTCHA (/includes/captcha)

* mcp - Moderator Control Panel (/mcp.php, /includes/mcp)

* ucp - User Control Panel (/includes/ucp)

说明:用户控制面板,用来处理用户的操作,注意这里的面板只是抽象的面板,一张面板,上面有几个按钮,比如注册,登录等。

* utf - UTF8-related functions/classes (/includes/utf)

* search - Search system (/includes/search)

* styles - phpBB styles (/styles)

 

论坛使用者的角色

三大角色:用户、版主、管理员

 

模块和插件

我们如何使用论坛?通过操作是不是,而单个操作比如你点击一个“注册”链接对我们来说是没有意义的,因为我们的目的是注册,而注册是由很多单个操作组成的,也就是“注册”操作集,所以代码里很多工作是用来应付我们一个又一个的操作集。BB里把这些处理论坛使用者操作集的代码做成模块,一个模块应付一个操作集。

有了模块之后,插件就很好理解了,如果使用者想让BB更强大,加入了一个可以处理额外操作集的模块,这个模块就是一个插件啦。

那么拿到一个模块之后怎么使用它呢?BB认为只要两步就够啦。载入和显示。

 

MVC

不要忘了这个程序由16个包组成, 不要忘了这个程序拥有MVC架构。先来讲controller,controller可以分为front controller部分和action controller部分,前者负责分发,后者负责处理。ucp包就是一个controller,它的front部分就是/ucp.php,它的action部分就是/includes/ucp/。ucp包就这两块地方,不信你搜索一下。当然ucp.php也包含了一部分的action,那是因为某些action比较简单,没必要另外开个文件。

[PHP]如何给一个变量赋长字符串

 

$summary = <<< summary
In the latest installment of the ongoing Developer.com PHP series,
I discuss the many improvements and additions to
<a href="http://www.php.net">PHP 5's</a> object-oriented architecture.
summary;

 

 

[PHP]如何去除字符串中的whitespace.

首先是whitespace的定义:任何在印刷术当中显示为空白的字符。包括以下:

Unicode记法

  • U+0009–U+000D (control characters, containing Tab, CR and LF)
  • U+0020 SPACE
  • U+0085 NEL (control character next line)
  • U+00A0 NBSP (NO-BREAK SPACE)
  • U+1680 OGHAM SPACE MARK
  • U+180E MONGOLIAN VOWEL SEPARATOR
  • U+2000–U+200A (different sorts of spaces)
  • U+2028 LS (LINE SEPARATOR)
  • U+2029 PS (PARAGRAPH SEPARATOR)
  • U+202F NNBSP (NARROW NO-BREAK SPACE)
  • U+205F MMSP (MEDIUM MATHEMATICAL SPACE)
  • U+3000 IDEOGRAPHIC SPACE

在php种,去除的方法主要有三种,这三种适用情况也不同。

1, trimStrip whitespace (or other characters) from the beginning and end of a string

trim()这个函数只会去除字符串开头结尾部分的部分whitespace,如下:

  • " " (ASCII 32 (0x20)), an ordinary space.
  • "\t" (ASCII 9 (0x09)), a tab.
  • "\n" (ASCII 10 (0x0A)), a new line (line feed).
  • "\r" (ASCII 13 (0x0D)), a carriage return.
  • "\0" (ASCII 0 (0x00)), the NUL-byte.
  • "\x0B" (ASCII 11 (0x0B)), a vertical tab.

但不会去除中间的whitespace,这一定要注意。

2, preg_replacePerform a regular expression search and replace

用正则表达式来去除whitespace,这个就可以比较彻底了,去除一个字符串中所有的whitespace。具体代码如下:

 

<?php
$str = 'foo      o';
$str = preg_replace('/\s/', '', $str);
// This will be 'fooo' now
echo $str;
?>

 3, str_replace(' ',”,$string);

 适合去除space,而非whitespace