如何让自己的网站支持更多格式的图片上传?
对于大多数网站的使用者来说,可能他们并不了解自己所使用的各类浏览器只能显示jpeg、gif和png文件。就算在Windows平台中最常用的bitmap(bmp)格式,以及扫描仪所使用的Tiff格式图片,都是不能被浏览器支持,浏览器并不能直接把以上的格式图片显示在网页中。
当然你也可以要求用户使用各类工具进行图片的转换后,然后再上传。不过相信在这些用户中必然会存在不少不妥协者,当然也必然包含一些菜鸟型用户。相信这种方法应该不是非常好的解决方案。我们当然应该为网友做更多,让他们可以简单的使用我们的网站。
现在就介绍一种非常方便、强大的工具,它不仅可以支持各类图片格式的转换,也能对图片进行相关的缩放。前提可能就是你网站的Web Host是Linux,同时它支持ImageMagick。(应该专业些的Web Host都会安装这个工具)。如果你的Web Host支持SSH,你只需使用SSH登入到系统中,在命令行运行一下convert命令即可。如果系统未给出任何出错信息,而给出了convert命令的相关帮助,那就说明你的系统支持ImageMagick。
以下介绍一下常用的命令:
- 转换图片格式:
convert image.tiff image.png
- 对图片进行缩放:
convert -resize 400×300 src.png dst.png
convert -resize 200×200^ src.png dst.png
更多命令行信息请参考:http://www.imagemagick.org/script/command-line-processing.php
在PHP中只需要简单的使用system()这个函数来调用以上的外部命令即可。同时也可结合GD库来实现图片的Watermark功能。
PHP实现trackback
Trackback是Blog中非常Cool的一个功能,通过它可以了解有多少站点引用了你的文章。如何使用PHP实现这样的功能?其实可以使用Pear库的Services_Trackback即可。
IBM Developerwork有相关介绍文章:使用 PHP 实现引用链接(trackback)
Zend Framework 1.51 manual chm
今天在看Zend Framework 1.51 说明文件的时候,无意中发现所下载的文档包中还包含了制作chm的项目文件。既然这样为何不索性自己做一个chm文件,同时方便自己察看,还可以使用chm的检索功能。
自己对原始文件进行了一定的修正:
- 补上了遗漏的note.png图片。(chm用的是IE引擎,缺图后页面会很难看的)
- 参考framework官方网站说明的字体设定修改了chm中使用的字体。
为了方便其他网友的学习,索性把此chm文件一并上传一份。
有兴趣的可在此地址下载: zend_framework_manual_en.chm
在Ubuntu 7.1上安装 Xinc (包含Xdebug的安装)
XInc是什么?它是一套PHP持续集成(continuous integration的系统,它完全使用PHP5进行编写,同时集成了Subversion、Phing、PHPUnit、PHPDocumentor等功能。
1.安装PHP模块和Xdebug模块
- sudo apt-get install php5 php5-dev php5-cli(其中php5-dev为了安装xdebug所以必须安装)。
- sudo apt-get install php5-xsl (Xinc需要xsl extension)
- sudo pecl install xdebug。(编译成功说明已经安装完成)
-
编辑/etc/php5/apache/php.ini和/etc/php5/cli/php.ini加入 zend_extension="/usr/lib/php5/20060613+lfs/xdebug.so"。(此目录名词会在step2完成后显示)
- sudo pear channel-discover pear.xinc.eu (Xinc的pear库)
- sudo pear channel-discover pear.phpunit.de (PHPUnit的pear 库)
- sudo pear channel-discover pear.phing.info (Phing的pear库)
- sudo pear install VersionControl_SVN-alpha
- sudo pear install –alldeps xinc/Xinc
- sudo pear run-scripts xinc/Xinc
3.配置Apache
- 在/etc/init.d/httpd.conf 文件中加入Include /etc/xinc/www.conf,此文件中主要包含Virtual Host的配置。
- 运行sudo a2enmod rewrite,加入apache对mod_rewrite的支持。
- 输入/etc/init.d/apache2 restart 重新启动apache server。
由于默认使用了127.0.0.1:8080作为xInc的Url,所以在浏览器的Url栏中输入既可看到Xinc的UI了。
如何实现查寻关键词的高亮显示
查寻功能是每个网站都有的基本功能,最简单的实现方法当然就是使用SQL的like操作符来匹配用户输入的关键字。
以一个简单的CMS系统举例,检索栏位可能包括有Title(主题)和Content(内容),具体的SQL语句撰写如下:
SELECT * FROM cms WHERE title LIKE '%{$name}%' OR content LIKE '%{$name}%')";
SQL语句中%xxx%可以检索出任何包含xxx的字符串的主题或内容作为符合条件的资料。如xxx为test,那么test、contest、testable等等都是符合的结果。
现在我们就已经完成了一半的功能,接着如何实现高亮显示呢?其实其中最复杂的是如何做到英文的整词选择,最简单方法当然是使用正则表达式来进行替换。PHP代码撰写如下:
$content = preg_replace("/\b(\w*$highlight\w*)\b/",
"<spanstyle=\"background-color:#369;\">$1</span>" ,
$content);
其中正则表达式:\b(\w*test\w*)\b,\b就是来定位整词的,\w代表任意的ascii字符。如需考虑一些符号的情况,如“-”,只需要把\w修改成[\w-]即可。通过以上的正则表达式,我们就可以高亮显示以下的字符串中的关键字了,其中搜索的关键字为test。
test home run contest a test
Zend Framework 1.5 Released
等待了许久的Zend Framework 1.5版本终于发布了,在尝试了许久的Symfony之后,重新回过头来审视Zend Framework,不得不对开发团队的设计能力大大欣赏。其实可能它的最大优点就是扩展性和可重用性极强。何以见得?如果想把Symfony使用到Zend Framework中应该是一个不可能的事情,但在Symfony中整合Zend Framework的一些库,完全没有难度。同时Zend Framework还加入Lucene,PDF此类功能,应该都是对PHP开发贡献极大。
那我们来看看1.5有哪些改进之处:
- 加入了OpenID和Microsoft InfoCard的支持。
- 修改了Form的设计,完全的集成了Ajax的支持。
- Layout和View的修改。(其实在1.0时这个就设计的不是很好,不清楚那时怎么会不知Layout的)。
- LDAP的认证支持,可能开发企业内部网时非常需要。
- Lucene 检索引擎:支持高级检索,包括通配符、时间段等等。
- 扩展的Ajax的支持。
- PDF支持UTF-8 字符集。
- Google GData web services。(还包括对YouTube的支持)。
具体版本发布说明请参见:http://devzone.zend.com/article/3270-Zend-Technologies-Releases-Zend-Framework-1.5
Zend Studio for Eclipse is released
终于禁不住Eclipse的诱惑,Zend Studio也采用基于Eclipse的架构,其实对Zend公司来说应该是非常明智的一个选择:
- PDT已经开发了功能非常强大了,Zend公司只需要对它的一些软肋功能进行加强即可。
- Eclipse的广大用户群、Eclipse可跨平台的拓展性以及Eclipse丰富的插件(Plugin)相信也是吸引Zend的一个主要原因。
那既然已经有了PDT,是否还需要Zend Studio,这个可能就要看你的需求了。
以下是Zend Studio for Eclipse的一些增强功能:
- Code Generation – 补充了一些JDT有但PDT没有的功能。(其实这个功能应该不是非常难实现,不知为何PDT没有,可能和PHP4和PHP5类的语法差异较大有关)
- Javascript Support – 我对这个功能没有啥兴趣,毕竟这样优秀的插件已经很多,如Aptana等等已经做了非常好。调试Javascript对程序员来说才是关键,特别是在IE中调试。
- HTML Support / Source Control – 这些功能Eclipse已经做了非常的完美了,同时Zend Studio中Svn集成也是用的Polarion。
- Refactoring – 这个可能是所有功能里最吸引我的,RDT这个功能不是非常完善的Eclipse插件都有此功能,特别是对于PHP这类解释语言,没有Refactoring都不能确认是否少改了,毕竟通过手动修改容易出错。
- PHPUnit Testing & Debugging - 现在都比较重视单元测试和其他测试,所以这些功能对开发还是有较大帮助,比较Eclipse的JDT已经非常好的和JUnit集成,PHP当然也需要这个功能。同时Debug这个就不用说了,PDT原来使用的也是Zend开发的,相信没有其他Debug程序会比Zend Studio做了更好。
- Zend Framewrok的集成 – 对于使用Zend framework做开发的程序员来说非常的不错,默认就可以生成整个Zend Framework的框架,接着就是加入自己的类就可以了。不过如需整合其他Framework看来可能还是有一定的困难。希望能有越来越多其他Framework (如Symfony) 的Eclipse Plugin,这样还能对Zend Studio进行扩充。这个功能只能说是忧喜参半。
不过总的来说Zend Studio应该还是现在最好的PHP 开发环境,特别是采用了Eclipse后,使用上更加方便了。
Zend Framework 1.5 Preview Release
很久未有大变化的Zend Framework终于在1/28日发布了1.5 Preview版本,上次在官方的博客上看到过一点介绍,包括了以下的更新:
Zend_Auth_Adapter_LdapZend_Build/Zend_ConsoleZend_Controller additional action helpers, including ContextSwitch/AjaxContext, Json, and AutoCompleteZend_FormZend_InfoCardZend_LayoutZend_OpenIdZend_Search_Lucene improvements, including wildcard search, date range search, fuzzy search, and Lucene 2.1 index file format supportZend_View enhancements, including actions, partials, and placeholdersZend_Pdf UTF8 supportNew Zend_Service consumables (final list TBD)A whole lotta bug fixes and documentation improvements
猜想Zend_Layout可能就是类似于ROR和Symfony的一个View的大模版框架,这个的确非常有用。还有autocomplete的功能也不错,就不知集成后的此功能是否非常容易使用,现在很多的网友都有Autocomplete的功能。
PHP Framework – CodeIgniter
CodeIgniter 是一个小巧但功能强大的 PHP 框架,作为一个简单而“优雅”的工具包,它可以为 PHP 程序员建立功能完善的 Web 应用程序。如果你是一个使用共享主机,并且为客户所要求的期限而烦恼的开发人员,如果你已经厌倦了那些傻大笨粗的框架。
看了它的介绍还不错,主要对它的小巧感兴趣,不过现在的Framework真的太多了,哪有空把它都学了。 还是慢慢来吧。
中文网站:http://codeigniter.org.cn 。
英文官网:http://codeigniter.com
PHP Oracle Web Development
TITLE : PHP Oracle Web Development: Data processing, Security, Caching, XML, Web Services, and Ajax (Paperback)
AUTHOR : Yuli Vasiliev
PUBLISHER : Packt Publishing publisher
ISBN : 1847193633
EDITION : 1st
PUB DATE : August 03, 2007
LANGUAGE : English
Download : emule
