当前位置: 首页 > 编程日记 > 正文

PHP编程问题集锦

1. Win32下apache2用get方法传递中文参数会出错
test.php?a=你好&b=你也好
传递参数是会导致一个内部错误
解决办法:"test.php?a=".urlencode(你好)."&b=".urlencode(你也好)

2. win32下的session不能正常工作
php.ini默认的session.save_path = /tmp 这显然是linux下的配置,win32下php无法读写session文件导致session无法使用,把它改成一个绝对路径就可以了,
例如session.save_path = c:/windows/temp

3. include和require的区别
两者没有太大的区别,如果要包含的文件不存在, include提示notice,然后继续执行下面的语句,require提示致命错误并且退出,据我测试,win32平台下它们都是先包含后执行,所以被包含文件里最好不要再有include或require语句,这样会造成目录混乱。

4. isset()和empty()的区别
两者都是测试变量用的。但是 isset()是测试变量是否被赋值,而empty()是测试一个已经被赋值的变量是否为空。如果一个变量没被赋值就引用在php里是被允许的,但会有 notice提示。如果一个变量被赋空值,$foo=""或者$foo=0或者 $foo=false,那么empty($foo)返回真,isset($foo)也返回真,就是说赋空值不会注销一个变量。
要注销一个变量,可以用 unset($foo)或者$foo=NULL。

5. mysql查询语句包含有关键字
php查询mysql的时候,有时候mysql表名或者列名会有关键字。这时候查询会有错误。例如表名是order,查询时候会出错。简单的办法是sql语句里表名或者列名加上`[tab键上面]来加以区别,
这样就不会因为误用关键字而出现错误。
例如select * from `order` 。

6. 数组非数字键名引号的必要性
PHP 会把数组中非数字键名没有引号引起来的键名当作是常量去获取, 当找不到的时候, 抛出一个NOTICE(Notice: Use of undefined constant ......), 然后再根据”常量名”生成一个字符串,  数组中的非数字键的键名一定要有引号,在字符串变量替换的时候, 写引号会导致错误, 虽然这种错误提示可以通过 error_reporting()进行屏蔽,但好的程序,自适应的代码是不应该通过这种方法进行伪装的。标准写法:
$array[1] = 'abc';
$array['key'] = 2;  Bad: $array[key] = 2;
$string = "variable value is {$array['key']}"

另:在非数字键名不加引号的生成OPCODE中明显多一条指令:FETCH_CONSTANT

7. 使HTML/PHP格式的字符串如何照原样显示
如:
<?PHP
$str="<a href='http://www.csdn.net'>HTML</a>";
echo "被解释处理过的: ".$str;
echo htmlentities(nl2br($str));
?>

8. 一切写入数据库中的数据都应该进行必要的验证和过滤
写入前
$string = addslashes($string);
INSERT TABLE SQL
读取时
$string = stripslashes($string);
显示时
$string = htmlspecialchars(nl2br($string))

9. PHP文件中的结尾符号 ?>
在文件中 ?> 结尾符号它不是必需的。有时就可以不必要加上,这样可以避免产生一些难于调试的错误问题。例如,在使用header()函数来重定向(redirect)时,如果在其前面某个包含文件中 ?> 后面不小心加上了空格就会出现错误。

10. 正则表达式URL 我在项目常用到的
$link = "A http://p.you.video.sina.com.cn/player/outer_player.swf?auto=1&vid=25542767&uid=1154209371  asdf/asd.sdf http://www.s.flash你好 asdfas./asd.sd http://bbs.400.com.cn/gg/wjdpy.mp3 http://p.you.video.sina.com.cn/player/outer_player.swf?auto=1&vid=25542767&uid=1154209371";
$pattern = "/(https{0,1}:[a-zA-Z0-9_/-]+/.[a-zA-Z0-9_/-/./%/?=///&/+#]+)/";
preg_match_all($pattern, $link, $matches);
print_r($matches[0]);
结果:Array ( [0] => http://p.you.video.sina.com.cn/player/outer_player.swf?auto=1&vid=25542767&uid=1154209371 [1] => http://www.s.flash [2] => http://bbs.400.com.cn/gg/wjdpy.mp3 [3] => http://p.you.video.sina.com.cn/player/outer_player.swf?auto=1&vid=25542767&uid=1154209371 )


11. PHP中的JSON数据存储格式
在非UTF-8编码下,中文字符将不能被json_encode,否则结果会是空值。所以,如果你使用gb2312编写PHP代码,那么就需要将包含中文的内容使用iconv或者mb转为UTF-8再进行json_encode。

相关文章:

jsonp详解

json相信大家都用的多&#xff0c;jsonp我就一直没有机会用到&#xff0c;但也经常看到&#xff0c;只知道是“用来跨域的”&#xff0c;一直不知道具体是个什么东西。今天总算搞明白了。下面一步步来搞清楚jsonp是个什么玩意。 同源策略 首先基于安全的原因&#xff0c;浏览器…

PHP面向对象精华

PHP面向对象精华1 使用extends实现继承以及重载、魔术方法的含义 class B extends A 声明的时候B里可以没有A里的方法 调用的时候$bnew B(); $b->A里的方法(); $b->A里的属性1; $b->B里的方法(); $b->B里的方法(); 如果$anew A(); 可以 $a->A里的方法(); $a->…

springmvc和mybatis整合关键配置

springmvcmybaits的系统架构&#xff1a; 第一步&#xff1a;整合dao层 mybatis和spring整合&#xff0c;通过spring管理mapper接口。 使用mapper的扫描器自动扫描mapper接口在spring中进行注册。 第二步&#xff1a;整合service层 通过spring管理 service接口。 使用配置方式将…

阿里亲制明信片,字节、百度直接发锅……这些公司的新年礼盒越来越会玩~

‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍整理 | 王晓曼出品 | 程序人生&#xff08;ID&#xff1a;coder _life&#xff09;每到年末&#xff0c;各大互联网大厂的新年礼盒都会作为…

html中radio、checkbox选中状态研究(静下心来看,静下心来总结)

html中radio、checkbox选中状态研究&#xff08;静下心来看&#xff0c;静下心来总结&#xff09; 一、总结 1、单选框的如果有多个checked 会以最后一个为准 2、js动态添加checked属性&#xff1a;不行&#xff1a;通过 $("[namesex]:eq(1)").attr("checked&q…

新年新气象,100 行 Python 代码制作动态鞭炮

作者 | FrigidWinter来源 | CSDN博客放鞭炮贺新春&#xff0c;在我国有两千多年历史。关于鞭炮的起源&#xff0c;有个有趣的传说。西方山中有焉&#xff0c;长尺余&#xff0c;一足&#xff0c;性不畏人。犯之令人寒热&#xff0c;名曰年惊惮&#xff0c;后人遂象其形&#xf…

php 反射类简介

反射是操纵面向对象范型中元模型的API&#xff0c;其功能十分强大&#xff0c;可帮助我们构建复 杂&#xff0c;可扩展的应用。其用途如&#xff1a;自动加载插件&#xff0c;自动生成文档&#xff0c;甚至可用来扩充 PHP 语言。php 反射api 由若干类组成&#xff0c;可帮助我们…

shell时间

Shell 调用系统时间变量 Linux常用命令获取今天时期&#xff1a;date %Y%m%d 或 date %F 或 $(date %y%m%d) 获取昨天时期&#xff1a;date -d yesterday %Y%m%d 获取前天日期&#xff1a;date -d -2day %Y%m%d 依次类推比如获取10天前的日期&#xff1a;date -d -10day %Y%m%d…

杨老师课堂_Java核心技术下之控制台模拟记事本案例...

预览效果图&#xff1a; 背景介绍&#xff1a; 编写一个模拟记事本的程序通过在控制台输入指令&#xff0c;实现在本地新建文件打开文件和修改文件等功能。 要求在程序中&#xff1a; 用户输入指令1代表“新建文件”&#xff0c;此时可以从控制台获取用户输入的文件内容&#x…

PHP的URL处理

完整URL地址&#xff1a; http://username:passwordhostname/path?argvalue#auchor 协议&#xff1a;http:// 用户名和密码&#xff1a; username:password 以&#xff1a;将两者分隔 主机名&#xff1a;hostname 和/为分隔符 路径&#xff1a; /path 以/开头、包含/符号 参…

UnitOfWork以及其在ABP中的应用

Unit Of Work&#xff08;UoW&#xff09;模式在企业应用架构中被广泛使用&#xff0c;它能够将Domain Model中对象状态的变化收集起来&#xff0c;并在适当的时候在同一数据库连接和事务处理上下文中一次性将对象的变更提交到数据中。 从字面上我们可以我们可以把UnitOfWork叫…

分享3个好用到爆的 Python 模块,点赞收藏

作者 | 俊欣来源 | 关于数据分析与可视化今天给大家介绍3个特别好用的Python模块&#xff0c;知道的人可能不多&#xff0c;但是特别的好用。PsutilPendulumPyfigletPsutilPython当中的Psutil模块是个跨平台库&#xff0c;它能够轻松获取系统运行的进程和系统利用率&#xff0c…

使用XHProf分析PHP性能瓶颈(二)

上一篇文章里&#xff0c;我们介绍了如何基于xhprof扩展来分析PHP性能&#xff0c;并记录到日志里&#xff0c;最后使用xhprof扩展自带的UI在web里展示出来。本篇文章将讲述2个知识点&#xff1a; 使用xhgui代替xhprof的默认UI界面&#xff0c;更便于分析使用tideways扩展替换x…

PHP自动加载类—__autoload()和spl_autoload_register()

test.php <?phpfunction __autoload($class_name) {require_once $class_name . .php;}$obj new j();?> 当前目录下有j.php <?phpclass j{function __construct() {echo "成功加载";} }?> 正常输出&#xff1a;成功加载修改test.php代码<?phpf…

二分 + 模拟 - Carries

Carries Problems Link Mean: 给你n个数&#xff0c;让你计算这n个数两两组合相加的和进位的次数. analyse: 脑洞题. 首先要知道&#xff1a;对于两个数的第k位相加会进位的条件是&#xff1a;a%(10^k)b%(10^k)>10^k. 想到这一点后就简单了&#xff0c;枚举每一位&#…

机器学习的出现,是否意味着“古典科学”的过时?

作者&#xff1a;Laura Spinney译者&#xff1a;刘媛媛原文&#xff1a;Are we witnessing the dawn of post-theory science?让我们回忆一下&#xff0c;Isaac Newton 被一个苹果砸中头部&#xff0c;然后是怎么提出牛顿第二定律——万有引力的&#xff1f;大概过程是这样的&…

MySQL5.6.16二进制源码安装详解及一键安装实现

一、系统环境 1.1操作系统 [rootlocalhost ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [rootlocalhost ~]# uname -rm 10.0-693.el7.x86_64 x86_64 [rootlocalhost ~]# 1.2 安装前环境监测 1.2.1.SELinux和系统防火墙关闭 检查selinux [rootlocalho…

基于 OpenCV 的表格文本内容提取

作者 | 小白来源 | 小白学视觉小伙伴们可能会觉得从图像中提取文本是一件很麻烦的事情&#xff0c;尤其是需要提取大量文本时。PyTesseract是一种光学字符识别&#xff08;OCR&#xff09;&#xff0c;该库提了供文本图像。PyTesseract确实有一定的效果&#xff0c;用PyTessera…

Redis以及Redis的php扩展安装无错版

安装Redis 下载最新的 官网&#xff1a;http://redis.io/ 或者 http://code.google.com/p/redis/downloads/list第一步&#xff1a;下载安装编译 #wget http://redis.googlecode.com/files/redis-2.4.4.tar.gz#tar zxvf redis-2.4.4.tar.gz#cd redis-2.4.4#make #make instal…

Android UI SurfaceView的使用-绘制组合图型,并使其移动

绘制容器类&#xff1a; //图形绘制容器 public class Contanier {private List<Contanier> list;private float x0,y0;public Contanier(){listnew ArrayList<Contanier>();}public void draw(Canvas canvas){canvas.save();canvas.translate(getX(), getY());chi…

新型混合共识机制及抗量子特性的 Hcash 主链测试链即将上线

由上海交通大学密码与计算机安全实验室&#xff08;LoCCS&#xff09;及上海观源信息科技有限公司负责研发的、具有新型混合共识机制及抗量子特性的 Hcash 主链代码已完成并在 2017 年 12 月18 日之前上传至github&#xff1a; https://github.com/HcashOrg/hcashd https://git…

CentOS 6虚拟机安装

这篇博客已经被合并到这里了&#xff1a; 虚拟机安装CentOS以及SecureCRT设置【完美无错版】 下面不用看了&#xff0c;看上面即可 1.下载虚拟机Oracle VM VirtualBox最新的下载地址&#xff1a; http://download.virtualbox.org/virtualbox/4.1.6/VirtualBox-4.1.6-74713-Win…

开发中新游戏《庞加莱》

三体题材的游戏&#xff0c;表现三体人在三体星上生活和冒险。收集水和物器&#xff0c;躲避火焰与巨日&#xff0c;探索遗迹并与巨型生物战斗。温度会因太阳位置不同而发生变化&#xff0c;进而对环境产生一定影响。 游戏开发中。 ---- 2017-4-27版视频&#xff1a; http://v.…

介绍一个打怪升级练习 Python 的网站,寓教于乐~

作者 | 周萝卜来源 | 萝卜大杂烩这是一个学习 Python 的趣味网站&#xff0c;通过关卡的形式来锻炼 Python 水平。一共有 33 关&#xff0c;每一关都需要利用 Python 知识解题找到答案&#xff0c;然后进入下一关。很考验对 Python 的综合掌握能力&#xff0c;比如有的闯关需要…

hive基本操作与应用

通过hadoop上的hive完成WordCount 启动hadoop ssh localhost cd /usr/local/hadoop ./sbin/start-dfs.sh cd /usr/local/hive/lib service mysql start start-all.sh Hdfs上创建文件夹 hdfs dfs -mkdir test1 hdfs dfs -ls /user/hadoop 上传文件至hdfs hdfs dfs -put ./try.tx…

PHP源代码分析-字符串搜索系列函数实现详解

今天和同事在讨论关键字过虑的算法实现&#xff0c;前几天刚看过布隆过滤算法&#xff0c;于是就想起我们公司内部的查找关键字程序&#xff0c;好奇是怎么实现的。于是查找了一下源代码&#xff0c;原来可以简单地用stripos函数查找&#xff0c; stripos原型如下&#xff1a; …

麻省理工研究:深度图像分类器,居然还会过度解读

作者 | 青苹果来源 | 数据实战派某些情况下&#xff0c;深度学习方法能识别出一些在人类看来毫无意义的图像&#xff0c;而这些图像恰恰也是医疗和自动驾驶决策的潜在隐患所在。换句话说&#xff0c;深度图像分类器可以使用图像的边界&#xff0c;而非对象本身&#xff0c;以超…

Oracle 查询转换之子查询展开

概念:子查询展开&#xff08;Subquery Unnesting&#xff09;是优化器处理带子查询的目标sql的一种优化手段&#xff0c;它是指优化器不再将目标sql中子查询当作一个独立的处理单元来单独执行&#xff0c;而是将该子查询转换为它自身和外部查询之间等价的表连接。这种等价连接转…

Xcode中通过删除原先版本的程序来复位App

可以在Xcode菜单中点击 Product->Clean Build Folder (按住Option键,在windows键盘中是Alt键.) 此时Xcode将会从设备中删除(卸载uninstall)任何该app之前部署的版本. 接下来重启Xcode,再试一下,有时这可以修复非常奇怪(really weird)的问题.

深入理解PHP之OpCode

OpCode是一种PHP脚本编译后的中间语言&#xff0c;就像Java的ByteCode,或者.NET的MSL。 此文主要基于《 Understanding OPcode》和 网络&#xff0c;根据个人的理解和修改&#xff0c;特记录下来 &#xff1a;PHP代码&#xff1a; <?phpecho "Hello World";$a 1…