PHP 基础问答01
2013-05-25 09:49
169 查看
// 表单中 get与post提交方法的区别?
get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息.
post相对要比get安全,post的传输大小可以在php.ini中设置默认为2M
// session与cookie的区别?
session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的(session_dir)的位置进行的存放
cookie:用来存储连续訪問一个頁面时所使用,是存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的。session 都可以设置他们的生存时间。
// 数据库中的事务是什么?
对数据的完整性,如果程序操作成功则所有的单元都会成功,如果在执行过程中有一个操作失败,则整个操作程序都会失败,进行事物回滚。
// echo(),print(),print_r(),var_dump()的区别
echo() 用来输出一个或多个字符串,echo是php语句,是语言结构 没有返回值 比 print 快
print() print 与echo相同 用来输出一个或者多个字符串, print是一个函数 返回int类型的值 只能打印出 int string
print_r() 用来打印数组或对象 返回bool类型的值,按结构输出变量的值
var_dump() 可以打印出复杂类型变量的值和类型
// 语句include和require的区别是什么?为避免多次包含同一文件应该怎么办?
include 引进,当发生错误时 会警告 但是程序会继续执行
require 引进,当发生错误时 会报错 程序禁止执行 相对来说require 比 include安全
如果include 与 require 都不存在文件 include 会警告 require会报错 并程序禁止执行
// 如何修改SESSION的生存时间?
session_set_cookie_params('1*3600');
// 在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?
<<<show
这里面是我的字符串
show;
// 请说明php中传值与传引用的区别。什么时候传值什么时候传引用?
传值:在函数内部对值的修改不会影响函数外部的值。
传引:在函数内部操作会对函数外部的值有影响
传值 引用大的字符串会占用一些系统资源,传引则不会。如果不希望改变函数外部的值,则使用传值。
// 在PHP中error_reporting这个函数有什么作用?
设置PHP报错级别 输出错误信息。
// error_reporting(2047)?
控制输出全部错误信息 相当于: error_reporting = E_ALL
// JS表单弹出对话框函数是?获得输入焦点函数是?
alert()
onfocus()
// foo()和@foo()之间有什么区别?
@foo()禁止错误输出页面上,很多应用到 @mysql_query(); @mysql_fetch_array();
// mysql_fetch_row() 和 mysql_fetch_array 之间有什么区别?
mysql_fetch_row() 从结果集中返回一行数组作为数字数组,如果没有返回一行或者多行则返回false
mysql_fetch_array() 从结果集中返回一行数组作为关联数组,或者数字数组 两者兼得,如果没有返回一行或者多行 则返回false
mysql_fetch_asoc(); 从结果集中返回一行数组作为关联数组, 如果没有返回一行或者多行,则返回false
// GD库是做什么用的?
GD库提供了很多处理图片的API 可以利用GD库的函数来处理图片,如缩略图,数据生成公司报表,给图片添加水印等。
// 请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别
int : 数字类型
char : 字符串类型
varchar : 字符串类型
datetime: 时间格式类型
text : 文本字符串
char 是固定字符串长度 varchar 字符串长度是可变化的 char在做搜索的时候查询速度比varchar快 而varchar 省系统资源
// 请写出PHP5权限控制修饰符?
public private protected
// 请写出php5的构造函数和析构函数?
__construct
__destruct
// MYSQL取得当前时间的函数是?,格式化日期的函数是?
now()
strtotime()
// 数组函数 arsort 的作用?
对数组进行逆向排序 并 保持索引关系
// 类的属性可以序列化后保存到 session 中,从而以后可以恢复整个类,这要用到的函数是
serialize()/unserialize()
// 一个函数的参数是不能对变量的引用,除非在php.ini中把
allow_call_time_pass_reference 设置为 on
// 设置POST 上传文件的大小 在php.ini 中设置
upload_file_filesize
post_max_size
// JS的转向函数是?怎么引入一个外部JS文件?
。window.location.href
。<script type="text/javascript" src="js/js_function.js"></script>
指出一些在PHP输入一段HTML代码的办法。
。echo "字符串";
。print("字符串");
。print_r("字符串");
。echo <<<show
字符串
show;
// 以Apache模块的方式安装PHP,在文件http.conf中首先要用语句什么语句加载动态装载PHP模块?然后再用语句什么语句使得Apache把所有扩展名为php的文件都作为PHP脚本处理。
。LoadModule php5_module "c:/php/php5apache2.dll"
。AddType application/x-httpd-php .php,
// reference 跟一个正规的变量有什么分别?如何 pass by reference?在什么情况下我们需要这样做?
Reference 传送的是变量的地址而非它的值,所以在函式中改变一个变量的值时,整个应用都见到这个变量的新值。
一个正规变量传送给函式的是它的值,当函式改变这个变量的值时,只有这个函式才见到新值,应用的其他部分仍然见到旧值。
$myVariable = "its' value";
Myfunction(&$myVariable); // 以 reference 传送参数
以 reference 传送参数给函式,可以使函式改变了的变量,即使在函式结束后仍然保留新值。
// 函式可以用来在现正执行的脚本中插入函式库?
对这道题目不同的理解会有不同的答案,
我的第一个想法是插入 PHP 函式库不外乎 include()、include_once()、require()、require_once(),
但细心再想,“函式库”也应该包括 com 物件和 .net 函式库,所以我们的答案也要分别包括 com_load 和 dotnet_load,
下次有人提起“函式库”的时候,别忘记这两个函式。
// 你如何替 PHP 的应用程式侦错?
我并不常这样做,我曾经试过很多不同的侦错工具,在 Linux 系统中设定这些工具一点也不容易。不过以下我会介绍一个近来颇受注目的侦错工具。
PHP - Advanced PHP Debugger 或称 PHP - APD,第一步是执行以下的指令安装:
pear install apd安装后在你的脚本的开头位置加入以下的语句开始进行侦错:
apd_set_pprof_trace();执行完毕,打开以下档案来查阅执行日志:
apd.dumpdir
你也可以使用 pprofp 来格式化日志。
详细的资料可以参阅 http://us.php.net/manual/en/ref.apd.php。
// “===”是什么?试举一个“==”是真但“===”是假的例子。
“===”是给既可以送回布尔值“假”,也可以送回一个不是布尔值但却可以赋与“假”值的函式,strpos() 和 strrpos() 便是其中两个例子。
问题的第二部份有点困难,想一个“==”是假,但是“===”是真的例子却很容易,相反的例子却很少。但我终于找到以下的例子:
if (strpos("abc", "a") == true){
// 这部分永不会被执行,因为 "a" 的位置是 0,换算成布尔值“假”
}
if (strpos("abc", "a") === true){
// 这部份会被执行,因为“===”保证函式 strpos() 的送回值不会换算成布尔值.
}
// 在一个类别内如何存取这个类别的特性及变改它的值?
使用语句:$this->propertyName,例如:
class myclass{
private $propertyName;
public function __construct(){
$this->propertyName = "value";
}
}
// 以下哪一个函式可以把浏览器转向到另一个页面?
redir()
这不是一个 PHP 函式,会引致执行错误。
header()
这个是正确答案,header() 用来插入卷头资料,可以用来使浏览器转向到另一个页面,例如:
header("Location: http://www.search-this.com/");
location()
这不是一个 PHP 函式,会引致执行错误。
redirect()
这不是一个 PHP 函式,会引致执行错误。
// 以下哪一个函式可以用来开启档案以便读/写?
fget()
这不是一个 PHP 函式,会引致执行错误。
file_open()
这不是一个 PHP 函式,会引致执行错误。
fopen()
这是正确答案,fopen() 可以用来开启档案以便读/写,事实上这个函式还有很多选项,详细资料请参阅 php.net。
open_file()
这不是一个 PHP 函式,会引致执行错误。
// 下面的代码用来做什么?请解释。
// ereg_replace :
在字符串中搜索正则表达式所有匹配的项,并替换为指定的字符,区分大小写。
ereg_replace() 函数 与 preg_replace() 函数效果相同,建议用preg_replace() 速度要比 ereg_replacea() 函数快
$date='08/26/2003';
print ereg_replace("([0-9]+)/([0-9]+)/([0-9]+)","\\2/\\1/\\3",$date);
这是把一个日期从 MM/DD/YYYY 的格式转为 DD/MM/YYYY 格式。
():代表一个表达式。
[]: 代表表达式的开始结束
/: 代表匹配边界。进行开始匹配结束匹配
\\2/\\1/\\3
代表前面匹配到的值替换为开始与结束
// 给你一行文字 $string,你会如何编写一个正规表达式,把 $string 内的 HTML 标签除去?
strip_tags()
// 去除字符串中的HTML和PHP标签
有两个参数,第一个为要去掉的变量,第二个是哪个标签不被过滤
正则表达式方式
@ $stringOfText = "<p>This is a test</p>";
$expression = "/<(.*?)>(.*?)<\/(.*?)>/";
echo preg_replace($expression, "\\2", $stringOfText);
@ $expression = "/(<[^>]*>)/";
echo preg_replace($expression, "", $stringOfText);
// 你如何利用 PHP 解决 HTTP 的无状态本质?
最主要的俩各选择是 session 和 cookie。使用 session 的方法是在每一页的开始加上 session_start(),然后利用 $_SESSION 散列表来储存 session 变量。
至于 cookie 你只需记着一个原则:在输出任何文字之前调用 set_cookie() 函式,此外只需使用 $_COOKIE 散列表便可以存取所有 cookie 变量。
还有一个不那么可靠的方法,就是利用访客的 IP 地址,这个方法有特定的危险性。
// 打开php.ini中的Safe_mode,会影响哪些函数?至少说出6个。
1:用户输入输出函数(fopen() file() require(),只能用于调用这些函数有相同脚本的拥有者)
2:创建新文件(限制用户只在该用户拥有目录下创建文件)
3:用户调用popen() systen() exec()等脚本,只有脚本处在safe_mode_exec_dir配置指令指定的目 录中才可能
4:加强HTTP认证,认证脚本拥有者的UID的划入认证领域范围内,此外启用安全模式下,不会设置PHP_AUTH
5:mysql服务器所用的用户名必须与调用mysql_connect()的文件的拥有者用户名相同
6:受影响的函数变量以及配置命令达到40个
// 写个函数来解决多线程同时读写一个文件的问题。
flock($hander,LOCK_EX); 这个可是内置函数啊,
这个尚待解决
// echo count("abc"); 输出什么?
答:"1"
count — 计算数组中的单元数目或对象中的属性个数
int count ( mixed $var [, int $mode ] ), 如果 var 不是数组类型或者实现了 Countable 接口的对象,将返回 1,有一个例外,如果 var 是 NULL 则结果是 0。
对于对象,如果安装了 SPL,可以通过实现 Countable 接口来调用 count()。该接口只有一个方法 count(),此方法返回 count() 函数的返回值。
// MySQL数据库,一天一万条以上的增量,怎么优化?
答:我们曾做过短信SP的东西,有个短信发送的日志表,每天增量也很大,处理的方法是按月进行分表,因为是日志表,主要操作是insert操作,所以每月初自动生成新的数据表,数据插入到对应月份的那张数据表。[比如表明前缀是cdb_smslog 后面加200910 及时cdb_smslog_200910]
其他优化方式暂时想不起来,对于myISAM, 考虑容量的话,也有优化的方案
但是对于那种查询操作的表的话,我的思路是根据作者的发布时间存储到不同的表里面
所以对sina那种海量数据的处理很感兴趣,很好奇他们的处理方法,[以前同事说sina 的首页同时操作10多个数据库]
// 请举例说明在你的开发过程中用什么方法来加快页面的加载速度
A.生成静态HTML
B.生成xml
C.可不用数据库的尽量不用数据库把变量参数存于文本.
D.用ZEND加速
// 求两个日期的差数,例如2007-2-5 ~ 2007-3-6 的日期差数
(strtotime(‘2007-3-6’)-strtotime(‘2007-2-5’))/3600*24
// 表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
select case when A>B then A else B end,
case when B>C then B else C end
From test
// 请简述项目中优化sql语句执行效率的方法,从哪些方面,sql语句性能如何分析?
(1)选择最有效率的表名顺序
(2)WHERE子句中的连接顺序
(3)SELECT子句中避免使用‘*’
(4)用Where子句替换HAVING子句
(5)通过内部函数提高SQL效率
(6)避免在索引列上使用计算。
(7)提高GROUP BY 语句的效率, 可以通过将不需要的记录在GROUP BY 之前过滤掉。
// 请举例说明在你的开发过程中用什么方法来加快页面的加载速度
要用到服务器资源时才打开,及时关闭服务器资源,数据库添加索引,页面可生成静态,图片等大文件单独服务器。使用代码优化工具啦
// 防止SQL注射漏洞一般用函数?
addslashes
// 传值是把实参的值赋值给行参 那么对行参的修改,不会影响实参的值 传地址 是传值的一种特殊方式,只是他传递的是地址,不是普通的如int 那么传地址以后,实参和行参都指向同一个对象
// 如何通过javascript判断一个窗口是否已经被屏蔽
获取open()的返回值,如果是null,就是屏蔽了
// javascript里打开一个新窗口是什么方法
window.open();
// 说明php 和smarty,thinkphp之间的关系?
Php 包含Smarty和Thinkphp
Smarty是PHP模版引擎
Thinkphp 是PHP框架
// 在php中 break 与 continue 的区别?
break: 跳出整个循坏体
continue: 跳过本次循坏,继续下一次循坏
// PHP中使用的四种标量类型都是?
boolean:布尔型
float : 浮点型
int : 整型
string : 字符串型
// 如果想让下拉列表框多选,需要设置?
multiple
// 如果要上传文件,表单中要设置?
enctype="multipart/form-data"
// array_push函数用于?
将值压缩在数组的末端,键值以数字自增
// 用PHP打印出前一天的时间格式是2006-5-10 22:21:21
echo date('Y-m-d H:i:s',strtotime('-1 day'));
或者
echo date('Y-m-d H:i:s',strtotime('-1 days'));
// 用PHP写出显示客户端IP与服务器IP的代码
echo $_SERVER['SERVER_ADDR']; //服务器端
echo $_SERVER['REMOTE_ADDR'] //服务器端
// 利用域名获取ip地址
echo gethostbyname('http://www.baidu.com');
// 有一个网页地址, 比如PHP开发资源网主页: http://www.phpres.com/index.html, 如何得到它的内容?
file_get_contents('http://www.baidu.com');
// 30、执行程序段<?php echo 8%(-2) ?>将输出?
0
// 在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量?而链接到当前页面的URL记录在预定义变量?
$_SERVER[PHP_SELF]
$_SERVER['REQUEST_URL']
// 简述如何得到当前执行脚本路径,包括所得到参数?
$_SERVER['SCRIPT_FILENAME'] //得到当前脚本的路径 不包括参数
$_SERVER['QUERY_STRING'] //得到当前脚本的参数
echo $_SERVER['SCRIPT_FILENAME']."?".$_SERVER['QUERY_STRING']
// 进制运算
可以是让他模拟一些简单的字符串函数,类似 bin2hex、base_convert、base64_encode,或者单纯的,让他手动算一下 7 进制的 54321 显示为 9 进制是多少。
应该高中或者之前就能接触到 2 进制 10 进制之间的换算了吧,当然,他当时很可能没听懂。通常的情况,如果以前没留意这个问题但有理解能力的,可能能在几分钟的做出一些成功不成功的尝试。至少不应该很茫然。最糟糕的情况,连整数的最大值是多少都不知道,那就算了。
// 描述一下常见的关于读取文件内容的操作,及各自的特点
应该不用迟疑太久就把 file、fopen、file_get_contents、readfile 列出来。表现好点还可以提下 readfile 的流式读取不占内存之类的。如果看的教材太老,可能只会说 fopen。最糟糕的辩解是不说跟数据库打交道比较多,文件操作没怎么接触过,完全无视文件静态化的存在。
get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息.
post相对要比get安全,post的传输大小可以在php.ini中设置默认为2M
// session与cookie的区别?
session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的(session_dir)的位置进行的存放
cookie:用来存储连续訪問一个頁面时所使用,是存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的。session 都可以设置他们的生存时间。
// 数据库中的事务是什么?
对数据的完整性,如果程序操作成功则所有的单元都会成功,如果在执行过程中有一个操作失败,则整个操作程序都会失败,进行事物回滚。
// echo(),print(),print_r(),var_dump()的区别
echo() 用来输出一个或多个字符串,echo是php语句,是语言结构 没有返回值 比 print 快
print() print 与echo相同 用来输出一个或者多个字符串, print是一个函数 返回int类型的值 只能打印出 int string
print_r() 用来打印数组或对象 返回bool类型的值,按结构输出变量的值
var_dump() 可以打印出复杂类型变量的值和类型
// 语句include和require的区别是什么?为避免多次包含同一文件应该怎么办?
include 引进,当发生错误时 会警告 但是程序会继续执行
require 引进,当发生错误时 会报错 程序禁止执行 相对来说require 比 include安全
如果include 与 require 都不存在文件 include 会警告 require会报错 并程序禁止执行
// 如何修改SESSION的生存时间?
session_set_cookie_params('1*3600');
// 在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?
<<<show
这里面是我的字符串
show;
// 请说明php中传值与传引用的区别。什么时候传值什么时候传引用?
传值:在函数内部对值的修改不会影响函数外部的值。
传引:在函数内部操作会对函数外部的值有影响
传值 引用大的字符串会占用一些系统资源,传引则不会。如果不希望改变函数外部的值,则使用传值。
// 在PHP中error_reporting这个函数有什么作用?
设置PHP报错级别 输出错误信息。
// error_reporting(2047)?
控制输出全部错误信息 相当于: error_reporting = E_ALL
// JS表单弹出对话框函数是?获得输入焦点函数是?
alert()
onfocus()
// foo()和@foo()之间有什么区别?
@foo()禁止错误输出页面上,很多应用到 @mysql_query(); @mysql_fetch_array();
// mysql_fetch_row() 和 mysql_fetch_array 之间有什么区别?
mysql_fetch_row() 从结果集中返回一行数组作为数字数组,如果没有返回一行或者多行则返回false
mysql_fetch_array() 从结果集中返回一行数组作为关联数组,或者数字数组 两者兼得,如果没有返回一行或者多行 则返回false
mysql_fetch_asoc(); 从结果集中返回一行数组作为关联数组, 如果没有返回一行或者多行,则返回false
// GD库是做什么用的?
GD库提供了很多处理图片的API 可以利用GD库的函数来处理图片,如缩略图,数据生成公司报表,给图片添加水印等。
// 请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别
int : 数字类型
char : 字符串类型
varchar : 字符串类型
datetime: 时间格式类型
text : 文本字符串
char 是固定字符串长度 varchar 字符串长度是可变化的 char在做搜索的时候查询速度比varchar快 而varchar 省系统资源
// 请写出PHP5权限控制修饰符?
public private protected
// 请写出php5的构造函数和析构函数?
__construct
__destruct
// MYSQL取得当前时间的函数是?,格式化日期的函数是?
now()
strtotime()
// 数组函数 arsort 的作用?
对数组进行逆向排序 并 保持索引关系
// 类的属性可以序列化后保存到 session 中,从而以后可以恢复整个类,这要用到的函数是
serialize()/unserialize()
// 一个函数的参数是不能对变量的引用,除非在php.ini中把
allow_call_time_pass_reference 设置为 on
// 设置POST 上传文件的大小 在php.ini 中设置
upload_file_filesize
post_max_size
// JS的转向函数是?怎么引入一个外部JS文件?
。window.location.href
。<script type="text/javascript" src="js/js_function.js"></script>
指出一些在PHP输入一段HTML代码的办法。
。echo "字符串";
。print("字符串");
。print_r("字符串");
。echo <<<show
字符串
show;
// 以Apache模块的方式安装PHP,在文件http.conf中首先要用语句什么语句加载动态装载PHP模块?然后再用语句什么语句使得Apache把所有扩展名为php的文件都作为PHP脚本处理。
。LoadModule php5_module "c:/php/php5apache2.dll"
。AddType application/x-httpd-php .php,
// reference 跟一个正规的变量有什么分别?如何 pass by reference?在什么情况下我们需要这样做?
Reference 传送的是变量的地址而非它的值,所以在函式中改变一个变量的值时,整个应用都见到这个变量的新值。
一个正规变量传送给函式的是它的值,当函式改变这个变量的值时,只有这个函式才见到新值,应用的其他部分仍然见到旧值。
$myVariable = "its' value";
Myfunction(&$myVariable); // 以 reference 传送参数
以 reference 传送参数给函式,可以使函式改变了的变量,即使在函式结束后仍然保留新值。
// 函式可以用来在现正执行的脚本中插入函式库?
对这道题目不同的理解会有不同的答案,
我的第一个想法是插入 PHP 函式库不外乎 include()、include_once()、require()、require_once(),
但细心再想,“函式库”也应该包括 com 物件和 .net 函式库,所以我们的答案也要分别包括 com_load 和 dotnet_load,
下次有人提起“函式库”的时候,别忘记这两个函式。
// 你如何替 PHP 的应用程式侦错?
我并不常这样做,我曾经试过很多不同的侦错工具,在 Linux 系统中设定这些工具一点也不容易。不过以下我会介绍一个近来颇受注目的侦错工具。
PHP - Advanced PHP Debugger 或称 PHP - APD,第一步是执行以下的指令安装:
pear install apd安装后在你的脚本的开头位置加入以下的语句开始进行侦错:
apd_set_pprof_trace();执行完毕,打开以下档案来查阅执行日志:
apd.dumpdir
你也可以使用 pprofp 来格式化日志。
详细的资料可以参阅 http://us.php.net/manual/en/ref.apd.php。
// “===”是什么?试举一个“==”是真但“===”是假的例子。
“===”是给既可以送回布尔值“假”,也可以送回一个不是布尔值但却可以赋与“假”值的函式,strpos() 和 strrpos() 便是其中两个例子。
问题的第二部份有点困难,想一个“==”是假,但是“===”是真的例子却很容易,相反的例子却很少。但我终于找到以下的例子:
if (strpos("abc", "a") == true){
// 这部分永不会被执行,因为 "a" 的位置是 0,换算成布尔值“假”
}
if (strpos("abc", "a") === true){
// 这部份会被执行,因为“===”保证函式 strpos() 的送回值不会换算成布尔值.
}
// 在一个类别内如何存取这个类别的特性及变改它的值?
使用语句:$this->propertyName,例如:
class myclass{
private $propertyName;
public function __construct(){
$this->propertyName = "value";
}
}
// 以下哪一个函式可以把浏览器转向到另一个页面?
redir()
这不是一个 PHP 函式,会引致执行错误。
header()
这个是正确答案,header() 用来插入卷头资料,可以用来使浏览器转向到另一个页面,例如:
header("Location: http://www.search-this.com/");
location()
这不是一个 PHP 函式,会引致执行错误。
redirect()
这不是一个 PHP 函式,会引致执行错误。
// 以下哪一个函式可以用来开启档案以便读/写?
fget()
这不是一个 PHP 函式,会引致执行错误。
file_open()
这不是一个 PHP 函式,会引致执行错误。
fopen()
这是正确答案,fopen() 可以用来开启档案以便读/写,事实上这个函式还有很多选项,详细资料请参阅 php.net。
open_file()
这不是一个 PHP 函式,会引致执行错误。
// 下面的代码用来做什么?请解释。
// ereg_replace :
在字符串中搜索正则表达式所有匹配的项,并替换为指定的字符,区分大小写。
ereg_replace() 函数 与 preg_replace() 函数效果相同,建议用preg_replace() 速度要比 ereg_replacea() 函数快
$date='08/26/2003';
print ereg_replace("([0-9]+)/([0-9]+)/([0-9]+)","\\2/\\1/\\3",$date);
这是把一个日期从 MM/DD/YYYY 的格式转为 DD/MM/YYYY 格式。
():代表一个表达式。
[]: 代表表达式的开始结束
/: 代表匹配边界。进行开始匹配结束匹配
\\2/\\1/\\3
代表前面匹配到的值替换为开始与结束
// 给你一行文字 $string,你会如何编写一个正规表达式,把 $string 内的 HTML 标签除去?
strip_tags()
// 去除字符串中的HTML和PHP标签
有两个参数,第一个为要去掉的变量,第二个是哪个标签不被过滤
正则表达式方式
@ $stringOfText = "<p>This is a test</p>";
$expression = "/<(.*?)>(.*?)<\/(.*?)>/";
echo preg_replace($expression, "\\2", $stringOfText);
@ $expression = "/(<[^>]*>)/";
echo preg_replace($expression, "", $stringOfText);
// 你如何利用 PHP 解决 HTTP 的无状态本质?
最主要的俩各选择是 session 和 cookie。使用 session 的方法是在每一页的开始加上 session_start(),然后利用 $_SESSION 散列表来储存 session 变量。
至于 cookie 你只需记着一个原则:在输出任何文字之前调用 set_cookie() 函式,此外只需使用 $_COOKIE 散列表便可以存取所有 cookie 变量。
还有一个不那么可靠的方法,就是利用访客的 IP 地址,这个方法有特定的危险性。
// 打开php.ini中的Safe_mode,会影响哪些函数?至少说出6个。
1:用户输入输出函数(fopen() file() require(),只能用于调用这些函数有相同脚本的拥有者)
2:创建新文件(限制用户只在该用户拥有目录下创建文件)
3:用户调用popen() systen() exec()等脚本,只有脚本处在safe_mode_exec_dir配置指令指定的目 录中才可能
4:加强HTTP认证,认证脚本拥有者的UID的划入认证领域范围内,此外启用安全模式下,不会设置PHP_AUTH
5:mysql服务器所用的用户名必须与调用mysql_connect()的文件的拥有者用户名相同
6:受影响的函数变量以及配置命令达到40个
// 写个函数来解决多线程同时读写一个文件的问题。
flock($hander,LOCK_EX); 这个可是内置函数啊,
这个尚待解决
// echo count("abc"); 输出什么?
答:"1"
count — 计算数组中的单元数目或对象中的属性个数
int count ( mixed $var [, int $mode ] ), 如果 var 不是数组类型或者实现了 Countable 接口的对象,将返回 1,有一个例外,如果 var 是 NULL 则结果是 0。
对于对象,如果安装了 SPL,可以通过实现 Countable 接口来调用 count()。该接口只有一个方法 count(),此方法返回 count() 函数的返回值。
// MySQL数据库,一天一万条以上的增量,怎么优化?
答:我们曾做过短信SP的东西,有个短信发送的日志表,每天增量也很大,处理的方法是按月进行分表,因为是日志表,主要操作是insert操作,所以每月初自动生成新的数据表,数据插入到对应月份的那张数据表。[比如表明前缀是cdb_smslog 后面加200910 及时cdb_smslog_200910]
其他优化方式暂时想不起来,对于myISAM, 考虑容量的话,也有优化的方案
但是对于那种查询操作的表的话,我的思路是根据作者的发布时间存储到不同的表里面
所以对sina那种海量数据的处理很感兴趣,很好奇他们的处理方法,[以前同事说sina 的首页同时操作10多个数据库]
// 请举例说明在你的开发过程中用什么方法来加快页面的加载速度
A.生成静态HTML
B.生成xml
C.可不用数据库的尽量不用数据库把变量参数存于文本.
D.用ZEND加速
// 求两个日期的差数,例如2007-2-5 ~ 2007-3-6 的日期差数
(strtotime(‘2007-3-6’)-strtotime(‘2007-2-5’))/3600*24
// 表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
select case when A>B then A else B end,
case when B>C then B else C end
From test
// 请简述项目中优化sql语句执行效率的方法,从哪些方面,sql语句性能如何分析?
(1)选择最有效率的表名顺序
(2)WHERE子句中的连接顺序
(3)SELECT子句中避免使用‘*’
(4)用Where子句替换HAVING子句
(5)通过内部函数提高SQL效率
(6)避免在索引列上使用计算。
(7)提高GROUP BY 语句的效率, 可以通过将不需要的记录在GROUP BY 之前过滤掉。
// 请举例说明在你的开发过程中用什么方法来加快页面的加载速度
要用到服务器资源时才打开,及时关闭服务器资源,数据库添加索引,页面可生成静态,图片等大文件单独服务器。使用代码优化工具啦
// 防止SQL注射漏洞一般用函数?
addslashes
// 传值是把实参的值赋值给行参 那么对行参的修改,不会影响实参的值 传地址 是传值的一种特殊方式,只是他传递的是地址,不是普通的如int 那么传地址以后,实参和行参都指向同一个对象
// 如何通过javascript判断一个窗口是否已经被屏蔽
获取open()的返回值,如果是null,就是屏蔽了
// javascript里打开一个新窗口是什么方法
window.open();
// 说明php 和smarty,thinkphp之间的关系?
Php 包含Smarty和Thinkphp
Smarty是PHP模版引擎
Thinkphp 是PHP框架
// 在php中 break 与 continue 的区别?
break: 跳出整个循坏体
continue: 跳过本次循坏,继续下一次循坏
// PHP中使用的四种标量类型都是?
boolean:布尔型
float : 浮点型
int : 整型
string : 字符串型
// 如果想让下拉列表框多选,需要设置?
multiple
// 如果要上传文件,表单中要设置?
enctype="multipart/form-data"
// array_push函数用于?
将值压缩在数组的末端,键值以数字自增
// 用PHP打印出前一天的时间格式是2006-5-10 22:21:21
echo date('Y-m-d H:i:s',strtotime('-1 day'));
或者
echo date('Y-m-d H:i:s',strtotime('-1 days'));
// 用PHP写出显示客户端IP与服务器IP的代码
echo $_SERVER['SERVER_ADDR']; //服务器端
echo $_SERVER['REMOTE_ADDR'] //服务器端
// 利用域名获取ip地址
echo gethostbyname('http://www.baidu.com');
// 有一个网页地址, 比如PHP开发资源网主页: http://www.phpres.com/index.html, 如何得到它的内容?
file_get_contents('http://www.baidu.com');
// 30、执行程序段<?php echo 8%(-2) ?>将输出?
0
// 在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量?而链接到当前页面的URL记录在预定义变量?
$_SERVER[PHP_SELF]
$_SERVER['REQUEST_URL']
// 简述如何得到当前执行脚本路径,包括所得到参数?
$_SERVER['SCRIPT_FILENAME'] //得到当前脚本的路径 不包括参数
$_SERVER['QUERY_STRING'] //得到当前脚本的参数
echo $_SERVER['SCRIPT_FILENAME']."?".$_SERVER['QUERY_STRING']
// 进制运算
可以是让他模拟一些简单的字符串函数,类似 bin2hex、base_convert、base64_encode,或者单纯的,让他手动算一下 7 进制的 54321 显示为 9 进制是多少。
应该高中或者之前就能接触到 2 进制 10 进制之间的换算了吧,当然,他当时很可能没听懂。通常的情况,如果以前没留意这个问题但有理解能力的,可能能在几分钟的做出一些成功不成功的尝试。至少不应该很茫然。最糟糕的情况,连整数的最大值是多少都不知道,那就算了。
// 描述一下常见的关于读取文件内容的操作,及各自的特点
应该不用迟疑太久就把 file、fopen、file_get_contents、readfile 列出来。表现好点还可以提下 readfile 的流式读取不占内存之类的。如果看的教材太老,可能只会说 fopen。最糟糕的辩解是不说跟数据库打交道比较多,文件操作没怎么接触过,完全无视文件静态化的存在。
相关文章推荐
- php基础01
- [PHP基础][01]我的第一个php程序
- PHP基础教程-06 课后作业01
- PHP之语言基础01 By ACReaper
- PHP基础笔记(01)
- 【个人笔记】001-PHP基础-01-PHP快速入门-01-PHP职业路线及PHP前景
- PHP 问答 01
- php002-基础知识01
- 【个人笔记】002-PHP基础-01-PHP快速入门-02-PHP语言相关介绍输
- PHP基础知识点总结01
- 01 PHP基础
- PHP基础教程-01 PHP概述
- PHP对比JS-01基础语法
- php基础01_thinkphp输出Hello World
- PHP基础----01PHP标记符
- (3) PHP 随笔---Smarty模板引擎技术基础+MiniSmarty 01-02
- 初级php基础知识问答题(答案仅供参考)
- 【PHP】基础笔记 01 —— 基本语法
- 【个人笔记】003-PHP基础-01-PHP快速入门-03-PHP环境搭建
- PHP学习笔记01——基础语法