PHP初学者常见问题集合 修正版(21问答)

1,如何连接连两个字符串?

答:在php中连接两个字符串可以直接使用“.”操作符号,例如$newStr="Zhang"."san",在java中是使用“+”操作符号,不要混淆。

2,如何计算一个字符串的长度?

答:$str="test";$length=strlen($str);即使用strlen(str)函数。

3,如何按照某个分割符拆分一个字符串?

答:使用explode(delim,str)函数,例如$arr=explode("::","a::bdf::dfsdf");该函数返回一个数组。在java中可以使用String对象的split函数。

4,如何获取http请求中的参数值?

答:如果为GET请求,使用$_GET[paramName],如果为POST请求,使用$_POST[paramName],例如:$email=$_POST["usermail"]。

5,php中是否可以像Java一样使用类?

答:可以,但是机制和具体使用方式可能不太一样。

6,是否可以举一个使用for循环的例子?

答:

复制代码 代码如下:

for($i=0;$i<100;$i++){

echo $i;

}

7,如何在javascript中取得php中的变量?

答:例子如下:

复制代码 代码如下:

$username=$_POST["username"];

?>

var username="<?php echo $username ?>";

8,如何删除一个文件?

答:使用unlink(filename)函数,当然程序必须有权限删除该文件才可以,我们所使用的php虚拟空间可能对一

些文件是有限制的,所以可能会出现权限错误。

9,我定义了一个类User,声明了该类的一个方法getName(),为什么我使用$user=new User;$name=$user.getName()会报错?

答:注意php中对类成员的引用方式,上面的引用应该为$name=$user->getName(),即使用->符号,而不是

Java中使用的“.”号。

10,我申请了一个不带mysql支持的php虚拟空间,请问我该怎么存取应用数据啊?

答:存取数据不一定要使用数据库,使用文件系统也是不错的,另外即使使用数据库,也不一定非要使用像mysql

、oracle等的这样的数据库,也可以使用一些文本数据库,例如txtsql,这样的话就不必去租用费用比较高的mysql

数据库空间了。

11,我申请了一个不带数据库的php空间,我现在的应用数据是存在文件中的,但是这会有一个安全问题,就是

访问者可以通过url查看到这些文件的内容,我怎么保护这些文件内容呢?

答:建议的方式有三种:

1)如果你租用的php空间允许设置目录的http访问权限,那么设置一下即可。

2)可以对文件内容进行加密,那么即使被下载,也没有多大的价值。

3)可以将这些文件的后缀改为.php,即使用php文件存储应用信息,这样的话,访问者就无法通过http访问到

这些文件的真实内容了,当然这些文件中的内容必须是正确的php语法,而且内容要使用php语法中的隐藏语法

将信息隐藏起来,例如一个存放帐号信息的文件如下:

users.php

复制代码 代码如下:

/*

:::user1:password1::user2:password2::user3:password3:::

*/

?>

12, 如何对一个字符串进行转码?

使用php的iconv函数,签名为:

$str=iconv(fromEncode,toEncode,str);

例如:

$str="php字符串转码";

$str=iconv("utf-8","gbk",$str);//将字符串从utf-8格式转换为gbk格式

转码是很重要的一个问题,例如目前许多博客提供的rss都是utf-8返回的,因此需要通过转化才能正确显示。

13,如何读取一个网页的HTML内容?

PHP中文件的概念和Java中文件流的概念是类似的,许多文件读取的函数,其接受的输入流不仅仅是本地文件系统,也可以是网络文件,下面介绍其中的一种方式:

复制代码 代码如下:

function getRssContent($url){

$handle = fopen ($url, "rb");

$contents = "";

$count=0;

do {

$data = fread($handle, 1000000);

$count++;

if (strlen($data) == 0) {

break;

}

$contents .= $data;

} while(true);

fclose ($handle);

return $contents;

}

14,PHP中如何操作mysql数据库?

为了方便初学者能够上手mysql的操作,我介绍一些常用的操作:

1)数据库连接与关闭

复制代码 代码如下:

$dbhost = "";

$dbuser = "";

$dbpw = "";

$dbname = "";

$link = mysql_connect($dbhost, $dbuser, $dbpw) or die("Could not connect: ".mysql_error());

mysql_select_db($dbname);

...//此处是对数据库具体的操作,后面的例子不再写数据库的连接和关闭操作

mysql_close($link);

2)向表中插入新数据

mysql_query("insert into mytable(id,name) values('".$id."','".$name."')");

上面是向mytable表的id和name字段插入一条数据。

3)从表中查询数据

$rs=mysql_query("select * from mytable mt where mt.id='001'");

4)从表中删除数据

$rs=mysql_query("delete from mytable mt where mt.id='001'");

5)对于复杂查询,例如select子句,mysql3.22以下版本不支持,因此许多时候php编写复杂sql时会得不到结果,这其实不是php的错,而是mysql的版本较低的缘故。

6)对于select返回的结果集,可以如下操作:

对于返回一条结果,可以如下:

复制代码 代码如下:

$row=mysql_fetch_object($rs);

$id=$row->id;//id是字段名称,或者字段的别名,以下同

$title=$row->title;

$asker=$row->asker;

对于返回多条结果,可以如下:

复制代码 代码如下:

while($row=mysql_fetch_object($rs)){

$id=$row->id;

$title=$row->title;

$asker=$row->asker;

}

当然还有方法可以使得返回的结果为数组,访问也可以根据字段的位置index值访问,这个可以查询相关手册,就不介绍了。

15,如果你的工程中使用HTML在线编辑器,那么FCKEditor可能是比较不错的一个选择,FCKEditor可以自己去网上下载,下载的地方很多,我介绍一下调用方式:

首先将FCKEditor的目录放到网站根目录下,假设你在网站根目录的/modules/cms/目录下的edit.php中要引用FCKEditor,具体代码如下:

复制代码 代码如下:

$sBasePath = "../../fckeditor/";//fckeditor是FCKEditor的目录

$oFCKeditor = new FCKeditor('content') ;

$oFCKeditor->BasePath= $sBasePath ;

$oFCKeditor->Value="" ;

$oFCKeditor->Width="666px";

$oFCKeditor->Height="300px"

?>

<?php $oFCKeditor->Create();?>

16,如何在session中存储数据?

首先要启动session机制,除了apache本身做一定的设置之外,在使用session的php页面中,要先调用session_start()方法,表示在本页面使用session。在session中存储数据的具体方式如下:

复制代码 代码如下:

session_start();

$username="admin";

session_register("username");

?>

[code]

那么在其它的页面,想取得session中的用户名,如下:

[code]

$username=$_SESSION["username"];

?>

同理,要判断当前访问的用户是否已经登录也可以通过上面的方式进行:当用户登录之后,在session之中注册用户名,在需要session控制的php页面中加入判断,例如:

复制代码 代码如下:

if(!session_is_registered("username")){

header("Location:login.php");

}

上面是通过判断session中是否注册了username变量来实现的。

17,PHP中如何定义类及其成员属性与操作,又如何调用?

直接举一个例子,应该可以说明上面的问题:

定义一个字符串处理工具类:StringUtils

复制代码 代码如下:

class StringUtils{

function StringUtils(){

}

function getLength($str){

return strlen($str);

}

}

?>

在php页面中调用方式为:

复制代码 代码如下:

include 'classes/com/xxx/StringUtils.php';

$length=StringUtils::getLength("abcde");

//或者

$instance=new StringUtils;

$length=$instance->getLength("abcde");

?>

对于一个类的方法,一般有两种调用方式,一种是当作静态方法进行调用,通过::连接符,一种是当作实例方法进行调用,通过->连接符。虽然调用可以使用两种方式调用,但是实际中一个类的方法是否为静态方法,往往是已经逻辑上定义好的,因此每一个方法,往往只使用某种方式调用,例如一个服务类中的方法,基本上应该都是实例方法,而一个工具类中的方法,基本上都是类方法或者说静态方法,例如:

复制代码 代码如下:

class UserService{

var $dbhost = "";

var $dbuser = "";

var $dbpw = "";

var $dbname = "";

function UserService(){

}

function login($username,$password){

$link = mysql_connect($this->dbhost, $this->dbuser, $this->dbpw) or die("Could not connect: ".mysql_error());

mysql_select_db($this->dbname);

$rs=mysql_query("select count(*) as value from cieqas_users where userid='".$username."' and password='".$password."'");

$row=mysql_fetch_object($rs);

$value=$row->value;

mysql_close($link);

settype($value,"integer");

if($value<=0){

return false;

}

return true;

}

?>

另外,在实例方法中调用$this,才有实际的意义。

18,如何设置一个变量的类型?

PHP可以算作是弱类型语言的一种,不需要对变量进行强制类型定义,例如:

$username="admin";

$length=0;

$obj=new MyClass;

许多时候,需要将一个字符串变量转换为int变量,或者反过来等等,该如何操作呢?其实可以使用settype方法,该方法可以指定变量的类型,签名如下:

settype(var,type)

其中类型的值有boolean(bool)、integer(int)、float、string、array、object、null

例如:

$state="0";

settype($state,"int");

if($state==0){

...

}

19,如何将一个数组进行反向排列?

通过array_reverse方法实现,例如:

复制代码 代码如下:

$arr=array();

$arr[0]=1;

$arr[1]=2;

$arr2=array_reverse($arr);

20,在PHP中如何将一个时间正确的进行显示?

在php中通过time()方法返回自从 Unix 新纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数,那么如何将该时间正确的显示为本地正确时间,许多时候我们都使用php中的setLocale方法,指定当前的地域,但是我们往往得不到正确的时间,给大家介绍一个其它的解决方式,就是通过Javascript与php结合去解决,例如:

复制代码 代码如下:

var time="<?php echo time() ?>";

var time=parseInt(time);

var date=new Date(time*1000);

var pattern="yyyy-MM-dd hh:mm:ss";

var df=new SimpleDateFormat();

var str=df.format(date);

document.write(str);

因此,可以将php中time()的值传递给Javascript,并做为Date对象的参数,然后通过Javascript开源类库JsJava的处理,即可。

21,PHP在当今是非常流行的一门语言,到目前为止已经形成了大量的函数库,例如处理字符串的、数学的、XML的、文件的、SOAP的、网络的等等,不过其在面向对象方面,还有一定程度的欠缺,然而也并不是说非要面向对象才能算是一门如何如何的语言,然而在实际的网站或者项目开发中,仅仅是大量的函数库有些时候感觉不是特殊的方便,尤其是有些时候,业务需要我们抽象出架构层次以及各个对象,这个时候定义一套合适的业务类库就比较合适了,毕竟当我们面对更高业务层面的开发时,我们需要封装的层次更高,那么这个时候类和对象就提上日程了,不过目前使用php的各个函数,感觉也是非常方便的,而且非常强大,这又让我多少有些埋怨类似Java这样的面向对象的语言,做什么逻辑都要借助一大堆类来实现,看来语言之间是需要互相学习的,而不是互相攻击,解决问题促进行业和社会的发展才是最根本的。相关阅读:

Active Server Pages 错误 ''ASP 0201'' 修复方法

几乎被人遗忘的HTML七种用法

一个用javascript写的select支持上下键、首字母筛选以及回车取值的功能

搜索自动提示功能的实现

XHTML标签写法应该注意的问题

linux常用性能优化命令荟萃

CSS研究教程:类名的长命名和短命名

解决64位本本WIN7改装xp3后系统运行慢的方法是什么

css跨站javascript

影响SQL Server性能的主要原因

Vista系统下虚拟机的安装全过程

两表连接的SQL语句

ASP3.0高级编程(四)

第四章 asp网络编程4.1 用ASP编程实现网络内容快速查找

两php文件如何连接不上,PHP_PHP初学者常见问题集合 修正版(21问答),1,如何连接连两个字符串? - phpStudy...相关推荐

  1. Unity 发布exe文件,连接不上数据库

    最近在写一个配置工具,需要用到MySql数据库,在unity里面功能都调试好了,发布exe 的时侯,报错,有关于dll的错误,解决办法: 将其修改为.NET2.0 就可以打包了. 但是发布成exe之后 ...

  2. 大文件读写优化问题。现有两个文件,一个837M的order.tbl,一个3.62G的lineitem.tbl,对这两个表进行嵌套连接

    在做数据库作业时遇到的优化问题! 作业要求: 实现一个基于嵌套循环策略的两表连接算法 • 算法原理: FOR EACH CHUNK c1 OF t1 {IF c1 NOT IN MEMORY READ ...

  3. Vmware虚拟机突然连接不上网络【方案集合】

    文章目录 方法一:网络连接状态排查 方法二:主机网络服务查询 其他解决方法 早上刚到公司,打开电脑,远程连接虚拟机,突然发现 SSH连接失败! What,什么情况,打开虚拟机,网络连接的按钮都没了?还 ...

  4. 技巧 | 栅格的属性数据和经纬度是分开的两个文件,怎么将它们整合到同一个文件上...

    这个问题来自一位读者的提问,小编的回答实际上也不太成熟,但作为一个技巧还是有必要记录一下的. 该读者的数据是两个相同精度的nc文件,其中一个文件包含的是属性数据,而它对应的经纬度信息是另一个文件的属性 ...

  5. jq 比较两个时间是否在同一天_.NET CORE下最快比较两个文件内容是否相同的方法...

    最近项目有个需求,需要比较两个任意大小文件的内容是否相同,要求如下: 项目是.NET CORE,所以使用C#进行编写比较方法 文件大小任意,所以不能将文件内容全部读入到内存中进行比较(更专业点说,需要 ...

  6. .NET CORE下最快比较两个文件内容是否相同的方法

    最近项目有个需求,需要比较两个任意大小文件的内容是否相同,要求如下: 项目是.NET CORE,所以使用C#进行编写比较方法 文件大小任意,所以不能将文件内容全部读入到内存中进行比较(更专业点说,需要 ...

  7. linux两文件对比,linux对比两个文件的差异

    在项目维护阶段,经常会对垃圾文件进行清理.比如没有在数据库中的文件进行删除,这个时候最好的选择就是使用shell命令了:废话不多说直接上代码: 1.首先准备好从数据表导出来的数据,方法随意 2.在服务 ...

  8. linux求两个文件的交集,并集,差集

    对单个文件去重,对两个文件取交集,取并集,取差集都用cat命令 对file去重 cat data1.txt | sort | uniq uniq只能对相邻的重复行去重,所以要先排序 删除两个文件的交集 ...

  9. mysql和windows连接不上_问题-jdbc连接不上mysql,windows下开启两个mysql服务

    1.问题: 前两天安装了个php 环境- wamp,由于我自己电脑上本身带有 mysql的数据库,在安装完后,没有注意到,mysql已经指向了 刚安装好的wamp里的mysql .导致 之前的 mys ...

最新文章

  1. UVa739 Soundex Indexing
  2. 偶然发现了获取有ID的dom的一种方法
  3. IT技术分类和就业特点
  4. 如何运用DDD - 实体
  5. 定界符在php中,php定界符如何使用
  6. install常见问题
  7. 推算周期软件有哪些,推算周期软件怎么用
  8. 手写文本 matlab 识别,手写汉字识别matlab
  9. MongoDB基本操作
  10. thinkphp6事件监听event-listene
  11. 走出“胡同”后,智能家居如何驶上高速路?
  12. Android之流行框架
  13. java虚拟机 方法区_java虚拟机---方法区[szx]
  14. 开源一个简单的android手机音乐app
  15. 国外问卷调查做快点有影响吗
  16. c语言整数大小越界,整数越界相加并求第n个斐波纳契数(C语言实现)
  17. uniapp 微信云开发静态网站和云函数跳转小程序
  18. App Store Server API 实践总结
  19. layui列表显示缩略图_layui 表格中实现照片预览,点击查看原图
  20. python+opencv将表格图片按照表格框线分割、识别

热门文章

  1. 用html5颜色自动渐变,HTML5渐变背景色生成器
  2. 学生成绩管理系统项目介绍
  3. JAVA有没有moba游戏_盘点那些年5V5的MOBA游戏,除了王者荣耀,还有其他的精品!...
  4. 计算机的基本知识快捷键,电脑常识:十个常用电脑快捷键技巧
  5. 如何在本机执行 pyscript (在网页中执行python)
  6. 高并发超发优惠券问题
  7. 道法自然-体道、悟道、得道
  8. vue + echarts实现数据可视化统计页面
  9. 【数据结构】图的深度遍历与广度遍历
  10. 麦肯锡报告称,未来全球70%的公司将使用人工智能技术