存档

文章标签 ‘PHP’

【PHP】input的value值出现双引号无法显示的解决办法

2011年12月14日 2 条评论
<?php
$str = "I'm a \"!";
?>
<input type="text" value="<?=$str?>" />

结果浏览器的文本框里只显示了“I’m a ”,双引号不见了,查看源代码可以发现如下

<input type="text" value="I'm a "!" />

阅读全文…

分类: 网页设计 标签: 393次阅读

【PHP】检测数字字符串is_numeric与ctype_digit的区别

2011年12月2日 1 条评论

PHP中有两个函数is_numeric和ctype_digit都是检测字符串是否是数字,但也存在一点区别

  • is_numeric:检测是否为数字字符串,可为负数和小数
  • ctype_digit:检测字符串中的字符是否都是数字,负数和小数会检测不通过

写了个测试代码测试一下:

阅读全文…

分类: 程序开发 标签: 556次阅读

【PHP】过滤不完整的UTF-8字符的函数

2011年8月7日 没有评论
用IE打开某个XML文件时提示“无法显示XML页”,具体错误为“文本内容中发现无效字符”。用Notepad打开文件后发现有不完整字符,如下:
不完整字符

不完整字符

于是也就想到写个函数来过滤,具体如下,实验有效

阅读全文…

分类: 程序开发 标签: 691次阅读

【PHP】过滤XML中的非法字符

2011年8月1日 没有评论

一般XML中如果含有&等字符,可以通过CDATA来过滤,但是含有一些不认识的特殊字符时候就会不起作用,下面是从别人那儿拿来的一个过滤方法,过滤xml中的非法字符:

//XML标准规定的无效字节为:

/*
0×00 – 0×08
0x0b – 0x0c
0x0e – 0x1f
*/

//所以很简单,输出的时候过滤这些字符就万无一失了,下面是PHP的实现。

/* PHP 实现 */
function XmlSafeStr($s)
{
return preg_replace("/[\\x00-\\x08\\x0b-\\x0c\\x0e-\\x1f]/","",$s);
}

原文无法访问http://zongfeng.bloghome.cn/posts/77742.html

p.s. W3C的XML规范中关于字符的定义请参看这里:http://www.w3.org/TR/2004/REC-xml-20040204/#charsets

分类: 程序开发 标签: , 830次阅读

【PHP】Fatal error: Cannot redeclare class的解决办法

2011年7月19日 2 条评论

写PHP代码的时候碰到这样的问题

Fatal error: Cannot redeclare class ….

从字面来看也很好理解,说明是重复定义了类,找了一下自己的代码,是因为存在同名的类导致的,修改了类名就好了。

再记一个网上找到的解决方法,可能在某些场合有用,先记着

if (!class_exists('pageModule')){
    require_once(PATH_site.'fileadmin/scripts/class.page.php');
}
分类: 程序开发 标签: 2,183次阅读

【PHP】setcookie设置Cookie用法(及设置无效的问题)

2011年4月3日 没有评论

平时用Session比较多,很少用到Cookie,这次是为了解决Discuz!自动同步登陆不得不用Cookie。

结果碰到一个问题,setcookie设置了Cookie并没有生效,在浏览器端也没有看到。查了一下,原来是setcookie是通过HTTP请求响应的Header来完成的,需要在请求响应内容输出之前执行(就像其他Header设定一样)。

在php.ini中error_reporting = E_ALL的情况下,输出内容之后再setcookie会弹出以下提示:

Warning: Cannot modify header information – headers already sent by (output started at C:\xampp\htdocs\b.php:2) in  on line

但因为当时php.ini设置成了error_reporting = E_ALL & ~E_NOTICE,于是没有任何提示,所以开发的时候还是建议设成error_reporting = E_ALL 方便观察到一些异常情况

附一个setcookie用法实例

阅读全文…

分类: 程序开发 标签: 2,300次阅读

【PHP】获取MySQL数据库里所有表的方法

2011年4月3日 没有评论

获取某个MySQL数据库中所有表的PHP代码如下:

function list_tables($database)
{
    $rs = mysql_list_tables($database);
    $tables = array();
    while ($row = mysql_fetch_row($rs)) {
        $tables[] = $row[0];
    }
    mysql_free_result($rs);
    return $tables;
}

但由于mysql_list_tables方法已经过时,运行以上程序时会给出方法过时的提示信息,如下:

Deprecated: Function mysql_list_tables() is deprecated in on line xxx

阅读全文…

分类: 程序开发 标签: , 1,269次阅读

【PHP】强制下载文件的代码(解决了IE下中文文件名乱码问题)

2011年4月3日 没有评论

以下这段代码作用是:浏览器提交excel格式的数据和文件名到服务器上,PHP将请求转化为可下载的excel文件,并要求浏览器弹出文件下载提示窗口。

中间遇到一个问题是提交的中文文件名直接放到header里在IE下会变成乱码,解决方法是将文件名先urlencode一下再放入header,如下。

<?php

$file_name = urlencode($_REQUEST['filename']);

header("Pragma: public");

header("Expires: 0");

header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

header("Content-Type: application/force-download");

header('Content-Type: application/vnd.ms-excel; charset=utf-8');

header("Content-Transfer-Encoding: binary");

header('Content-Disposition: attachment; filename='.$file_name);

echo stripslashes($_REQUEST['content']);

?>
分类: 程序开发 标签: 1,518次阅读

【PHP】统计中英文单词数(GB2312/UTF-8编码)

2010年11月24日 没有评论

英文单词的统计可以直接用php原生的函数str_word_count来进行统计。但这个函数对于中文汉字显得无能为力,无法准确统计到汉字个数。

解决办法是根据汉字的编码规则,自己来实现中文汉字数统计和中英文单词数统计。汉字编码参考Unicode编码表GB2312区位码、编码表与编码规则

对于GB2312编码的字符采用以下函数:

阅读全文…

分类: 程序开发 标签: , 1,436次阅读

【Discuz】积分机制实现解析

2010年8月24日 4 条评论

1、积分设置 

在论坛 管理界面》全局》积分设置 里进行积分项目和积分规则的设置。可以用扩展积分来实现诸如热情、威望、贡献、论坛币等论坛激励机制,可设定扩展积分之间的兑换比例,可设置发帖、回复、加精、上传附件等操作需要增加的积分及下载附件等操作需要扣除的积分,并可对不同版面设定不同的积分规则,可谓是灵活自由。 

如下图所示,有八个扩展积分可供设置,可用积分名称来命名你希望的名字,如热情、威望、贡献、论坛币等。

Discuz扩展积分设置

Discuz扩展积分设置

阅读全文…

分类: 程序开发 标签: , 2,216次阅读