php编码器
1. 我下载了电影,可是暴风影音,快播等播放软件播不了,说无法解码,咋办
你电影是什么格式的阿。?
http://www.0744dvd.com
这站下个QVOD播放器试试看能看不。
或者直接下个QVOD播放器在线观看。速度也很快不卡。
2. msfvenom怎么生成php文件
metasploit-framework旗下的msfpayload(荷载生成器),msfencoder(编码器),msfcli(监听接口)已然成为历史,取而代之的是msfvenom。
正所谓万变不离其宗,了解原理是最重要的。
现在,metasploit-framework完美搭档是msfvenom+msfcosole
下面,我们就来看一下msfvenom。
root@localhost:~# msfvenom -h
Error: MsfVenom - a Metasploit standalone payload generator.
Also a replacement for msfpayload and msfencode.
Usage: /usr/bin/msfvenom [options] <var=val>
Options:
-p, --payload <payload> Payload to use. Specify a '-' or stdin to use custom payloads
--payload-options List the payload's standard options
-l, --list [type] List a mole type. Options are: payloads, encoders, nops, all
-n, --nopsled <length> Prepend a nopsled of [length] size on to the payload
-f, --format <format> Output format (use --help-formats for a list)
--help-formats List available formats
-e, --encoder <encoder> The encoder to use
-a, --arch <arch> The architecture to use
--platform <platform> The platform of the payload
--help-platforms List available platforms
-s, --space <length> The maximum size of the resulting payload
--encoder-space <length> The maximum size of the encoded payload (defaults to the -s value)
-b, --bad-chars <list> The list of characters to avoid example: '\x00\xff'
-i, --iterations <count> The number of times to encode the payload
-c, --add-code <path> Specify an additional win32 shellcode file to include
-x, --template <path> Specify a custom executable file to use as a template
-k, --keep Preserve the template behavior and inject the payload as a new thread
-o, --out <path> Save the payload
-v, --var-name <name> Specify a custom variable name to use for certain output formats
--smallest Generate the smallest possible payload
-h, --help Show this message
root@localhost:~#
一,msfvenom生成payload的常见格式为:
最简单型:
msfvenom -p <payload> <payload options> -f <format> -o <path>
1
1
编码处理型:
msfvenom -p <payload> <payload options> -a <arch> --platform <platform> -e <encoder option> -i <encoder times> -b <bad-chars> -n <nopsled> -f <format> -o <path>
1
1
注入exe型+编码:
msfvenom -p <payload> <payload options> -a <arch> --plateform <platform> -e <encoder option> -i <encoder times> -x <template> -k <keep> -f <format> -o <path>
1
1
拼接型:
msfvenom -c <shellcode> -p <payload> <payload options> -a <arch> --platform <platform> -e <encoder option> -i <encoder times> -f <format> -o <path>
1
1
-o输出参数可以用“>”号代替
-f指定格式参数可以用单个大写字母代替:
例如:X 代表 -f exe
[H]arp
[P]erl
Rub[Y]
[R]aw
[J]s
e[X]e
[D]ll
[V]BA
[W]ar
Pytho[N]
3. php 代码如何将amr格式转换成mp3格式,不用FFmpeg
安装完成ffmpeg后,就可以使用ffmpeg进行音频文件格式转换。比如 ./ffmpeg -i /media/1.mp3 /media/1.wav, 通过该命令行可以将/media文件夹下1.mp3文件转换成WAV格式的。
但是反过来 ./ffmpeg -i /media/1.WAV /media/1.MP3 却不能转换成Mp3格式,提示如下错误(找不到编码器):
Stream mapping:
Stream #0:0 -> #0:0 (wav -> ?)
Encoder (codec none) not found for output stream #0:0
如果强行指定编码器 ./ffmpeg -i /media/1.wav -acodec mp3 /media/1.mp3, 仍提示找不到编码器错误:
Unknown encoder 'mp3'
这是因为,ffmpeg虽然是个开源软件,但因为具体格式的版权原因,它并没有包含所有的编解码格式,或者有个格式只有对应的解码器,但没有编码器,比如 Mp3就只有解码器,能播放Mp3文件,但却没有Mp3的编码器,无法将其它格式转换成Mp3。可以通过命令行 ./ffmpeg -codecs 查询编解码配置,第一个D表示Decoder,该格式能够解码;E表示Encoder,该格式可以编码。从中可以看出Mp3不能编码,Mp2倒是即可解码 也可编码。如何解决这个问题呢?
D A D mp1 MP1 (MPEG audio layer 1)
D A D mp1float MP1 (MPEG audio layer 1)
DEA D mp2 MP2 (MPEG audio layer 2)
D A D mp2float MP2 (MPEG audio layer 2)
D A D mp3 MP3 (MPEG audio layer 3)
D A D mp3a ADU (Application Data Unit) MP3 (MPEG audio layer 3)
D A D mp3afloat ADU (Application Data Unit) MP3 (MPEG audio layer 3)
我的第一个方法是自己写代码来完成。源码文件中,Allcodecs.c中对各个格式进行注册,先修改Mp3的注册行,改为同时注册解码器和编码器:
REGISTER_ENCDEC (MP2, mp2);
REGISTER_DECODER (MP2FLOAT, mp2float);
REGISTER_DECODER (MP3, mp3) // 此行修改为 REGISTER_ENCDEC (MP3, mp3)
然后新增Mp3编码器的实现Struct,里面Init函数、encode函数、close函数使用Mp2的函数,因为我也不知道如何去实现Mp3的函数,或者说到代码实现级我也不知道Mp3和Mp2的区别在哪。
AVCodec ff_mp3_encoder = {
.name = "mp3",
.type = AVMEDIA_TYPE_AUDIO,
.id = CODEC_ID_MP3,
.priv_data_size = sizeof(MpegAudioContext),
.init = MPA_encode_init,
.encode = MPA_encode_frame,
.close = MPA_encode_close,
.sample_fmts = (const enum AVSampleFormat[]){AV_SAMPLE_FMT_S16,AV_SAMPLE_FMT_NONE},
.supported_samplerates= (const int[]){44100, 48000, 32000, 22050, 24000, 16000, 0},
.long_name = NULL_IF_CONFIG_SMALL("MP3 (MPEG audio layer 3)"),
.defaults = mp3_defaults,
};
重新编译上线。 用命令行./ffmpeg -i /media/1.WAV /media/1.MP3 试了一下,能成功生成1.mp3文件,文件也能播放。似乎没有问题了,单用 file /media/1.mp3 查看了一下,发现文件不是Mp3格式的,而是Mp2格式的:
/media/1.mp3: MPEG ADTS, layer II, v1, 128 kbps, 44.1 kHz, Stereo
很遗憾,自行修改代码的方式行不通,因为不是每个编解码格式协议的专家,自行修改代码失败的风险很大,不仅是Mp3,还有一些其他格式比如AMR OGG H.263是没有编码器的。所以,第二个方案,使用成熟的第三方编码器和ffmpeg结合。
Mp3比较好的开源第三方库是libmp3lame(简称Lame)。我下了一个最新版本(3.99.4)的Lame源码,编译它:
首先配置: ./configure --prefix=/shared --enable-shared --enable-static
然后编译: make
make install
生成文件: 动态链接库 /shared/lib/libmp3lame.so 和 静态链接库 /shared/lib/libmp3lame.a。这里只需要使用动态链接库,将.so文件拷贝到/lib中,这个文件夹是动态链接库的默认搜索路径, 让ffmpeg运行时可以找到。
然后对ffmpeg配置libmp3lame: ./configure --enable-libmp3lame
重新编译ffmpeg,运行转化命令,看看效果如何。
首先执行 ./ffmpeg -codecs 查看可用编解码的变化,可以看到多出了libmp3lame编码器,带E的:
D V D lagarith Lagarith lossless
EA libmp3lame libmp3lame MP3 (MPEG audio layer 3)
EV ljpeg Lossless JPEG
D V D loco LOCO
然后执行 ./ffmpeg -i /media/1.WAV /media/1.MP3, 生成1.mp3,用File命令查看,确实是Mp3文件。
/media/1.mp3: Audio file with ID3 version 2.4.0, contains: MPEG ADTS, layer III, v1, 128 kbps, 44.1 kHz, Stereo
大功告成,问题解决。
也可在命令行中指定编解码生成Mp3文件:./ffmpeg -i /media/1.WAV -acodec libmp3lame /media/1.MP3.
4. Windows Media 编码器怎么用
导入你想要编码的文件,选择编码频率,想请参考:
http://www.1717games.cn/read.php?tid=16
★众志成城,抗震救灾★
5. JavaScript和PHP有什么区别呢后台交互用哪个处理好呢为什么谢谢了
二级级联菜单,不用AJAX和SQL无解,其实AJAX也不难,大概看看就懂了,可以再省级select里的option加上onclick事件,传一个参数给他,然后异步通信new一个XMLHTTPREQUEST对象给server让server返回市级select就行了。看起来挺麻烦,其实你去学学很简单的。SQL也很简单,从数据库直接select city from table_city(你的省和市的表,刚开始放一起就行,不用做外键表什么的,没必要) where province = 你异步提交上来的省名字或是ID
当然,你要是写死了只用PHP和JavaScript也能实现,不过那就失去级联意义了。就是在初始化的时候要把所有的省、市信息都down下来,数据量太庞大了。具体实现是:可以把数据放到一个大的json中,然后onclick响应省事件,通过穿的值到json中找市的数据,然后返回一个select,中间带着市的信息就行。十分不建议你这么做,属于歪门邪道。。。
想在这方面发展就要一步一个脚印的走,别认为不会的就不去学,应该看到不会的立马去学,这样才能进步。
当你学会了AJAX和SQL以后再做一个二级级联的东西就觉得很简单了。
6. php是
PHP 是一种流行的开放源代码的脚本语言。PHP早期的缩写是“Personal HomePage”,现在官方正式名称为“PHP: Hypertext Preprocessor”的递归缩写。
PHP主要用于服务器端应用程序及动态网页上,但是也可以用在命令列上执行,或是开发独立的窗口程序接口(GUI)
开发历史
1994年,加拿大籍的程序设计师Rasmus Lerdorf开发了一组以c语言为基础的CGI程序,目的是要取代一些用来维护他个人网站的Perl程序,不久之后,他把这些CGI程序公布并取名为"Personal Home Page Tools",这也是PHP名称的由来。Rasmus Lerdorf一直维护PHP语言直到PHP第二版,使用的解析引擎为PHP/FI。
[编辑] PHP 3
1997年,Tel Aviv 公司的Zeev Suraski 和 Andi Gutmans 改写了原本的解析引擎PHP/FI,并把PHP重新命名为"PHP: Hypertext Preprocessor"。在1998年公布了PHP 3提供大众下载测试,1999年两人在以色列成立了Zend Technologies公司来投入PHP的开发工作,并且开始制作下一代的解析引擎 - Zend引擎。
[编辑] PHP 4
2000年5月22日,以Zend引擎 1.0为解析引擎的PHP 4.0 发布。这也是PHP开始大受欢迎的版本,目前PHP 4还有在做安全性的更新,最新的版本是2006年九月发布的PHP 4.4.4版。
[编辑] PHP 5
2004年7月13日,以Zend引擎II为基础的PHP 5.0 发布,同时也加入了许多新特性:
更完整的面向对象支持:基本上到PHP 5之后PHP才算是比较完整的面向对象语言。
透过新的Zend引擎,提升了PHP执行的速度。
对MySQL数据库有更完整的支持。
更佳的XML支持。
内建SQLite数据库(但在PHP 5.1取消了内建,改用扩展函数库的方式)。
整合了SOAP的支持。
提供许多程序语言有的例外处理功能。
实验性的介绍新的数据库存取接口PDO(PHP Data Objects),在PHP5.1则开始缺省安装PDO。
最新的版本是2006年11月发布的5.2.0
[编辑] 应用
PHP主要应用在网页服务器,处理使用者的输入来产生网页。但是命令列脚本或是视窗程序接口(GUI)的开发也是PHP的主要应用范围
[编辑] 服务器端脚本语言
PHP最初就是设计成服务器端脚本语言,因此这也是PHP应用最广的部份。在此领域有许多其他的竞争者,例如ASP.NET、ColdFusion、JSP、Perl、Ruby on Rails等等。
在网络工业领域,PHP是LAMP架构的其中一部分,所谓的LAMP是指Linux、Apache、MySQL、以及PHP所组成的网络环境,提供了许多安全、可靠的网页应用程序。PHP目前已经是全世界最受欢迎的服务器端脚本语言,跨平台的特性更是让PHP广为流传,目前共有1800万台服务器安装有PHP。
[编辑] 命令列脚本
PHP也可以用命令列上执行来使用,例如分析纪录档、系统管理工作等。这些工作过去都是由一些其他的脚本语言例如Perl, Python, awk等来执行,PHP的在命令列上的使用则逐渐增加。
[编辑] 视窗程序接口(GUI)
透过和GUI函式库GTK+的结合,PHP也可以应用在视窗程序接口(GUI)的开发上,目前的应用还不普遍。
[编辑] 语法
Hello World程序
下面是一个在标准输出设备上输出Hello World的简单程序,这种程序通常作为开始学习编程语言时的第一个程序:
<?php
echo 'Hello World!';
?>
或
<?
print 'Hello World!';
?>
从中我们可以看出,PHP语言是嵌入在“<?php...?>”或“<?...?>” 之间的部分。而这个程序最终结果将是:
Hello World!
但建议您使用 <?php ... ?> 此种方式撰写您的程序,因为在XML中使用<? ?>作为标签,在php缺省的设定档php.ini中,通常此设定值为Off,若您有打开此设定的需要,您可以参见 php.ini 中关于 “short_open_tag = Off ”这部份的设定。
[编辑] PHP相关资源
[编辑] 函式库
主条目:PHP函式库列表
内建多样化的函数是PHP主要的特点之一,这些开放程序码的函数提供了各种不同的功能,例如档案处理、FTP、字串处理、等等。这些函数的使用方法和C语言相近(例如printf),这也是PHP广为流行的原因之一。
除了内建的函数之外,PHP也提供了很多延伸函式库(extension),像是各种数据库连接函数、资料压缩函数、图形处理等等。有些延伸函式库需要从PECL(PHP Extension Community Library)取得。
[编辑] 原始码编码和加速
PHP原始码是可以直接读取的,即使放到服务器上执行也是一样。虽然让PHP多了弹性,但相对的会造成安全危机和性能下降的问题。
因此透过PHP编码器,可以保护PHP的原始码不被读取(对商业软件来说特别有需求),也可以提升执行的效能。有许多公司或团体开发PHP的编码器,将PHP程序编译成字节码,再透过服务器上安装对应的程序来执行PHP脚本。
除了透过编码器加速之外,PHP还可以透过动态的快取机制来提升速度,加速工具有商业版的(例如Zend Platform),也有开放原始码的(例如eAccelerator, APC)。
[编辑] 样板引擎
Smarty
Smarty是一个php模板引擎.
更准确的说,它分开了逻辑程序和外在的内容,提供了一种易于管理的方法,可以描述为应用程序员和美工扮演了不同的角色,因为在大多数情况下 ,他们不可能是同一个人.例如,你正在创建一个用于浏览新闻的网页,新闻标题,标签栏,作者和内容等都是内容要素,他们并不包含应该怎样去呈现.在Smarty的程序里,这些被忽略了.模板设计者们编辑模板,组合使用html标签和模板标签去格式化这些要素的输出(html表格,背景色,字体大小,样式表,等等).有一天程序员想要改变文章检索的方式(也就是程序逻辑的改变).这个改变不影响模板设计者,内容仍将准确的输出到模板.同样的,哪天美工吃多了想要完全重做界面,也不会影响到程序逻辑.
程序员可以改变逻辑而不需要重新构建模板,模板设计者可以改变模板而不影响到逻辑
[编辑] PEAR
[编辑] PECL
[编辑] 对PHP的批评
PHP没有原生支援Unicode或是多位元字集(例如中文、日文、韩文等需要用两个以上为原来表示的字集),导致用PHP写的软件在国际语言化上遇到相当多的困难。
PHP没有名称空间(Namespace)的设计,降低了PHP语言设计上的弹性。预计在PHP 6会加入名称空间的特性。
PHP的函数命名规则非常的混乱,而且许多函数往往作用类似,只是传递的参数不同就要分成不同的函数,导致编写PHP程序时需要做相当多的手册查询工作,降低开发的效率。
PHP的魔术引号(magic quotes)功能可以自动处理使用者输入字串中的跳脱字符,有效避免SQL隐码攻击(SQL injection),但是因为不是每个使用者的输入都会写入到数据库,处理这些没有写入数据库的字串便浪费了效能。此外不是每个PHP环境都会开启魔术引号,程序设计时需要便需要对不同的服务器环境做因应,造成程序设计上的麻烦。魔术引号功能预计将会于PHP 6时取消。
有些PHP延伸函式库不是执行绪安全(threadsafe),导致PHP安装在多执行绪的服务器例如Apache 2上会发生不稳定的状况。
7. Dreamweaver中一般使用哪种编辑模式(设计器和编码器)
Dreamweaver可以编辑多种Web页面,使用的时候全凭自己的爱好。一般的设计器和代码编辑配合使用。如果你是初学者,还是要多多练习,建议多敲敲代码。(不是有代码和视图拆分的效果吗?手动编辑代码,保存一下就能在设计器里看到页面效果),如果是HTML页面,制作好页面,也可以按下键盘F12在浏览器中快速预览。如果是JSP、ASP、PHP等动态网页,需要其他配置设置。
强烈建议你去这个网站学习:http://tech.163.com/special/w/000915SQ/webmediatech.html
另外用迅雷下载FIF小组的HTML视频教程也很不错
多参考一下资料,多动手,学习效率提高神速!Good Luck!
8. 2000线编码器什么意思
编码器是通过转子在编码器内部扫过了多少个暗刻线来输出多少个脉冲信号,精度选择就是编码器有多少分辨率,越高的角度记录越精确,2000线就是编码器旋转整一圈可输出2000个脉冲信号,常用的还有100,200,300,500,1000,2000的,希望对你有所帮助
9. 怎么用格式工厂将exe的视频文件转换成mp4文件
1、exe的是执行文件,mp4的是视频文件,他们之间是不能转换的。2、除非你确认,你的那个exe文件是视频文件,如果是那样的话,就是被人给更改了文件扩展名,那你就要找到这个文件真的扩展名,并进行修改才行,修改完了,再找相应的转换工具,就成转换了。
10. php是什么
PHP(PHP:Hypertext Prerocessor)是一种在电脑上执行的脚本语言,主要是用途在于处理动态网页,也包含了命令行执行接口(command line interface),或者产生图形使用者接口(GUI)程序。[1]
PHP 最早由 Rasmus Lerdorf 在1995年发明,现在PHP实质上的标准由PHP Group和开放源代码社群维护。PHP 以 PHP License 作为许可协议,不过因为这个协议限制了PHP名称的使用,所以和开放源代码许可协议GPL不相容。[2]
PHP 目前被广泛的应用,特别是在服务器端的网页程序开发。一般来说 PHP 大多执行在网页服务器上,透过执行PHP程序码来产生使用者浏览的网页。PHP 几乎可以在任何的操作系统上执行,而且使用 PHP 完全是免费的。根据2007年4月的统计资料,PHP 已经被安装在超过2000万个网站和100万台服务器上[3]。
目录 [隐藏]
1 开发历史
1.1 版本历程
2 应用
3 语法
3.1 类型
3.2 变量
3.3 面向对象
4 PHP相关资源
4.1 函数库
4.2 源代码编码和加速
4.3 样板引擎
5 未来发展
5.1 PHP 5.3
6 参考资料
7 外部链接
[编辑] 开发历史
PHP 的发明人 Rasmus Lerdorf
Zend Technologies的创办人之一 - Andi GutmansFile:Zeev Suraski.jpg
Zend Technologies的创办人之一 - Zeev SuraskiPHP 原本的简称为 Personal Home Page[4],是Rasmus Lerdorf 为了要维护个人网页,而用c语言开发的一些CGI工具程序集,来取代原先使用的 Perl 程序。最初这些工具程序用来显示 Rasmus Lerdorf 的个人履历,以及统计网页流量[5]。他将这些程序和一些表单直译器整合起来,称为 PHP/FI。PHP/FI 可以和数据库连接,产生简单的动态网页程序。Rasmus Lerdorf 在1995年6月8日将 PHP/FI 公开释出,希望可以透过社群来加速程序开发与寻找错误[6]。这个释出的版本命名为 PHP 2,已经有今日 PHP 的一些雏型,像是类似 Perl 的变量命名方式、表单处理功能、以及嵌入到 HTML 中执行的能力。程序语法上也类似 Perl,有较多的限制,不过更简单、更有弹性。[5]
在1997年,任职于 Technion IIT 公司的两个以色列程序设计师:Zeev Suraski 和 Andi Gutmans,重写了 PHP 的剖析器,成为 PHP 3 的基础,而 PHP 也在这个时候改称为PHP: Hypertext Preprocessor.[5]。经过几个月测试,开发团队在1997年11月释出了 PHP/FI 2,随后就开始 PHP 3 的开放测试,最后在1998年6月正式释出 PHP 3。Zeev Suraski 和 Andi Gutmans 在 PHP 3 释出后开始改写 PHP 的核心,这个在1999年释出的剖析器称为 Zend Engine[7],他们也在以色列的 Ramat Gan 成立了 Zend Technologies 来管理 PHP 的开发。[5]
在2000年5月22日,以Zend Engine 1.0为基础的PHP 4正式释出,2004年7月13日则释出了PHP 5,PHP 5则使用了第二代的Zend Engine[5]。PHP包含了许多新特色,像是强化的面向对象功能、引入PDO(PHP Data Objects,一个存取数据库的延伸函数库)、以及许多效能上的增强[8]。目前PHP 4已经不会继续更新,以鼓励用户转移到PHP 5。[9][10]
2008年PHP 5成为了PHP唯一的有在开发的PHP版本。将来的PHP 5.3将会加入Late static binding和一些其他的功能强化[11][12] 。PHP 6 的开发也正在进行中,主要的改进有移除register_globals[13]、magic quotes 和 Safe mode的功能。[9][14]
[编辑] 版本历程
代表意义
红色 旧版;官方停止支持
黄色 旧版;官方维护中
绿色 目前版本
蓝色 未来版本
主要版本 次要版本 释出日期 说明
1.0 1.0.0 1995年6月8日 正式名称为"Personal Home Page Tools (PHP Tools)",第一次使用了"PHP"的名字。[5]
2.0 2.0.0 1994年4月16日 针对PHP 1.0的改进版,速度更快、体积更小,更容易产生动态网页。[5]
3.0 3.0.0 1998年6月6日 开发方式改成多人共同参与。Zeev Suraski 和 Andi Gutmans 为了这个版本重写了剖析引擎。[5]
4.0 4.0.0 2000年5月22日 改成以Zend引擎作为剖析器,具有两阶段剖析/标签剖析系统等先进功能。[15]
4.1.0 2001年12月10日 加入"超全域变量"(superglobals)功能,包含了$_GET、$_POST、 $_SESSION等[15]
4.2.0 2002年4月22日 默认取消register_globals功能。从网络接收的资料将不会设定成全域变量,增加程序安全性[15]。
4.3.0 2002年12月27日 加入命令行执行档,称为CLI。[15]
4.4.0 2005年7月11日 Added man pages for phpize and php-config scripts.[15]
4.4.8 2008年1月3日 Several security enhancements and bug fixes. Was to be the end of life release for PHP 4. Security updates only until 2008-08-08, if necessary.[16]
4.4.9 2008年8月7日 More security enhancements and bug fixes. The last release of the PHP 4.4 series.[17][18]
5.0 5.0.0 2004年7月13日 Zend Engine II with a new object model.[19]
5.1.0 2005年11月24日 Performance improvements with introction of compiler variables in re-engineered PHP Engine.[19]
5.2.0 2006年11月2日 Enabled the filter extension by default.[19]
5.2.8 2008年12月8日[20] emergent bug fix[20]
5.2.9 2009年2月26日[21] 这个版本解决了5.2.*的超过了50多个错误和多个安全问题,增加了稳定性。[21]
5.2.9-2(Windows) 2009年3月10日[22] 这个版本解决了在Windows系统下OpenSSL的安全缺陷,与其绑定的OpenSSL版本升级到0.9.8k。[22]
5.3.0 预计2009年第二季[23] 支持命名空间; 使用XMLReader和XMLWriter增强XML支持; 支持SOAP ,[24] 延迟静态绑定, 跳转标签(有限的 goto), 闭包,Native PHP archives
6.0 6.0.0 ??? 支持Unicode; 移除ereg扩展, 'register_globals', 'magic_quotes' 和 'safe_mode'; Alternative PHP Cache;Removal of mime_magic and rewrite of fileinfo() for better MIME support[25]
[编辑] 应用
PHP 是一个应用范围很广的语言,特别是在网络程序开发方面。一般来说 PHP 大多在服务器端执行,透过执行 PHP 的程序码来产生网页提供浏览器读取,此外也可以用来开发命令行脚本程序和使用者端的GUI应用程序。PHP可以在许多的不同种的服务器、操作系统、平台上执行,也可以和许多数据库系统结合。使用 PHP 不需要任何费用,官方组织 PHP Group 提供了完整的程序源代码,允许使用者修改、编译、扩充来使用。[26]
[编辑] 语法
PHP的语法参考了Perl、C语言,而且可以整合在HTML之中,以下是一个简单的Hello World程序:
<?php
echo 'Hello World!';
?>
PHP剖析引擎只剖析<?php到?>之间的程序码,而不包含在<?php到?>之间的内容则会直接送出,所以可以用以下的方式来将PHP程序码嵌入在HTML之中:
<?php
//-PHP程式码
?>
html内容
<?php
//-PHP程式码
?>
但是在判断语句中的HTML代码并不会被直接送出:
<?php
if (false) {
?>
HTML Code
<?php
}
?>
PHP可以用三种注解的形式:C与C++所使用的“/*...*/”与“//”,和Perl的“#”。
[编辑] 类型
PHP主要有以下四种变量类型:
整数 (integer)
浮点数 (float)
布尔数 (boolean)
字串 (string)
两种复合类型:
阵列 (array)
物件 (object)
两种特殊类型
NULL
资源 (resource)[27]
[编辑] 变量
PHP中,变量以“$”后接变量名称来表示。变量名称区分大小写。有效的变量名称以字母或底线开头,后接任意数目的字母、数字或底线。[28]
[编辑] 面向对象
PHP从PHP 3开始有了基本的面向对象的特性,但直到PHP 5将面向对象部份重新改写之后,PHP的面向对象功能才比较完善。现在PHP可以说是一个有完整面向对象功能的语言。
[编辑] PHP相关资源
[编辑] 函数库
主条目:PHP函数库列表
内建多样化的函数是PHP主要的特点之一,这些开放程序码的函数提供了各种不同的功能,例如档案处理、FTP、字串处理、等等。这些函数的使用方法和C语言相近(例如printf),这也是PHP广为流行的原因之一。
除了内建的函数之外,PHP也提供了很多延伸函数库(extension),像是各种数据库连接函数、资料压缩函数、图形处理等等。有些延伸函数库需要从PECL(PHP Extension Community Library)取得。
[编辑] 源代码编码和加速
PHP源代码是可以直接读取的,即使放到服务器上执行也是一样。虽然让PHP多了弹性,但相对的会造成安全危机和性能下降的问题。
透过PHP编码器,可以保护PHP的源代码不被读取(对商业软件来说特别有需求),也可以提升执行的效能。有许多公司或团体开发PHP的编码器,将PHP程序编译成字节码(byte code),再透过服务器上安装对应的程序来执行PHP脚本。
除了透过编码器加速之外,PHP还可以透过动态的快取机制来提升速度,加速工具有商业版的,例如Zend Platform,也有开放源代码的加速软件如eAccelerator、APC、XCache。
[编辑] 样板引擎
样板引擎让PHP应用程序可以做逻辑和使用接口上的分离,让程序开发更容易进行,目前比较受欢迎的样板引擎是PHP官方开发的Smarty。不过样板引擎有效能上的争议,因为PHP本身就是一个样板引擎,使用样板引擎反而变成“重新发明了轮子”(reinventing the wheel)。样板引擎最主要的好处就是让不懂PHP程序码的人也可以参与使用接口的开发,因为样板引擎的语言远比PHP简单。
[编辑] 未来发展
[编辑] PHP 5.3
命名空间(namespaces)原本预计在PHP 6提供支持,现在可能改至PHP 5.3就支持[29