解决Mac OS X上PhpStorm不能输入中文

看到Netbeans上类似问题的解决办法:

/Applications/netbeans/NetBeans 6.7.1/Content/Resource/netbeans/etc/netbeans.conf

netbeans_default_options 里加入

-J-Djava.awt.im.style=on-the-spot

类似,找到PhpStorm的启动文件:/Applications/PhpStorm 2.1.2.app/bin/idea.sh

在 REQUIRED_JVM_ARGS 参数里同样加上 -J-Djava.awt.im.style=on-the-spot

REQUIRED_JVM_ARGS="-J-Djava.awt.im.style=on-the-spot -Xbootclasspath/a:../lib/boot.jar $IDEA_PROPERTIES_PROPERTY $REQUIRED_JVM_ARGS"

可以输入中文了!(via)

PHP导出Excel

方法一:使用制表符、换行符模拟Excel导出

$filename="ExportExcel.xls";//定义一个excel文件

header("Content-Type: application/vnd.ms-execl");
header("Content-Type: application/vnd.ms-excel;charset=UTF-8");
header("Content-Disposition: attachment; filename=$filename");
header("Pragma: no-cache");
header("Expires: 0");

//设置excel输出表头,当然这不是必须的
echo iconv("UTF-8", "gb2312", "ID")."\t";
echo iconv("UTF-8", "gb2312", "Col1")."\t";
echo iconv("UTF-8", "gb2312", "Col2")."\t";
echo iconv("UTF-8", "gb2312", "Col3")."\t";
echo iconv("UTF-8", "gb2312", "Col4")."\n";//注意这个要换行

//连接数据库
mysql_query("SET NAMES utf8");

$result="SELECT * FROM");

while($row =mysql_fetch_array($result)){
	echo iconv("UTF-8", "gb2312", $row[0])."\t";
    echo iconv("UTF-8", "gb2312", $row[1])."\t";
    echo iconv("UTF-8", "gb2312", $row[2])."\t";
    echo iconv("UTF-8", "gb2312", $row[3])."\t";
    echo iconv("UTF-8", "gb2312", $row[4])."\n";
}

这个方法最简单,但是导出的文件并不是真正的Excel,无法设置格式,而且在Mac版的MS Office上无效。

php-excel

简单小巧的Excel类库,可自行修改相关代码设置单元格格式,导出的实际上市XML格式的电子表格,相关属性可参考MSDN文档。小技巧:可以先建一个Excel并将相关格式设置好,另存为XML,用文本编辑器打开XML即可查看相关格式的设置方法,其实和HTML、CSS差不多。

PHPExcel

功能强大、全面,支持office2003、office2007与之相应的是过于臃肿。

个人觉得一般应用的话,第二种方法就足够了,毕竟PHP处理office这些东西并非PHP的长项,在相关软件里点几下鼠标就能调整好的格式,又何必用PHP费大劲设置呢?

PHP获取文件扩展名的方法

推荐的方法:

echo pathinfo('/www/htdocs/your_image.jpg', PATHINFO_EXTENSION);

pathinfo详解:

<?php
$file_path = pathinfo('/www/htdocs/your_image.jpg');
echo "$file_path ['dirname']\n";
echo "$file_path ['basename']\n";
echo "$file_path ['extension']\n";
echo "$file_path ['filename']\n"; // only in PHP 5.2+
?>

以上将输出

  • /www/htdocs
  • your_image.jpg
  • jpg
  • your_image

注意: pathinfo 支持第3个参数

  • PATHINFO_DIRNAME – 目录
  • PATHINFO_BASENAME – 文件名(含扩展名)
  • PATHINFO_EXTENSION – 扩展名
  • PATHINFO_FILENAME – 文件名(不含扩展名)

其它不推荐的写法:

你可能会这样写

function get_file_extension($file_name) {
    return substr(strrchr($file_name,'.'),1);
}

或这样写

function file_extension($filename) {
    return end(explode(".", $filename));
}

之所以不推荐以上两种方法,主要基于效率考虑。

来源:PHP获取文件扩展名的正确方法

函数:PHP获取某绝对/相对路径的父路径

文所介绍的函数通过PHP获取某个给定路径下的父路径,给定的路径可以是相对路径和绝对路径。

实例:

PHP函数的输入输出示例
输入路径 函数返回值
/var/www/htdocs/images/ /var/www/htdocs/
/var/www/htdocs/images /var/www/htdocs/
/var/www/htdocs/index.php /var/www/htdocs/
c:\www\files\folder\ c:\www\files\

请注意:

1、如果在给定的路径中存在一个反斜杠”\”,则认为所有的其他斜杠均为反斜杠”\”。(Windows平台上)

2、输入路径的结尾的斜杠不是必需的,函数会自动判断是相对路径还是绝对路径(物理路径)。

3、如果$convert_backslashes 标志变量被置为True,那么路径中的所有反斜杠”\”都会被转换成正斜杠”/”

<?php
function parent_directory($path, $convert_backslashes = false) {
    // 检测是否包含反斜杠
    if( strstr($path, '\\') ) $backslash = true;
    // 将反斜杠转换成正斜杠
    	$path = str_replace('\\', '/', $path);
    // 如果输入路径结尾包含斜杠,则自动加上
    if( substr($path, strlen($path) - 1) != '/' ) $path .= '/';
    // 获取父路径
    	$path = substr($path, 0, strlen($path) - 1);
    	$path = substr( $path, 0, strrpos($path, '/') ) . '/';
    // 转换回反斜杠
    if( !$convert_backslashes && $backslash )
    	$path = str_replace('/', '\\', $path);
    return $path;
}
?>