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]如何给一个变量赋长字符串
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, trim — Strip 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_replace — Perform a regular expression search and replace
用正则表达式来去除whitespace,这个就可以比较彻底了,去除一个字符串中所有的whitespace。具体代码如下:
$str = 'foo o';
$str = preg_replace('/\s/', '', $str);
// This will be 'fooo' now
echo $str;
?>
3, str_replace(' ',”
适合去除space,而非whitespace