本文是整理其余人的文章所得javascript
一、include 和 include_once 有什么分别?require 又如何?
三者都是 用来在脚本中插入其余档案,视乎 url_allow_fopen 是否核准,这个档案能够从系统内部或外部取得。但他们之间也有微细的分别:
include(): 这个函式允许你在脚本中把同一个档案插入屡次,若果档案不存在,它会发出系统警告并继续执行脚本。
include_once():它跟 include() 的功能类似,正如它的名字所示,在脚本的执行期间,有关档案只会被插入一次。
require():跟 include() 差很少,它也是用来在脚本中插入其余档案,但若果档案不存在,它会发出系统警告,这个警告会引致致命错误令脚本停止执行php
二、给你一行文字 $string,你会如何编写一个正规表达式,把 $string 内的 HTML 标签除去?
首先,PHP 有内建函式 strip_tags() 除去 HTML 标签,为什么要自行编写正规表达式?好了,便看成是面试的一道考题吧,我会这样回答:java
$stringOfText = “<p>This is a test</p>”;$expression_r = “/<(.*?)>(.*?)<\/(.*?)>/”;echo preg_replace($expression_r, “\\2″, $stringOfText);// 有人说也可使用 /(<[^>]*>)/ $expression_r = “/(<[^>]*>)/”;echo preg_replace($expression_r, “”, $stringOfText);web
三、你如何利用 PHP 解决 HTTP 的无状态本质?
最 主要的俩各选择是 session 和 cookie。使用 session 的方法是在每一页的开始加上 session_start(),而后利用 $_SESSION 散列表来储存 session 变量。至于 cookie 你只需记着一个原则:在输出任何文字以前调用 set_cookie() 函式,此外只需使用 $_COOKIE 散列表即可以存取全部 cookie 变量。
还有一个不那么可靠的方法,就是利用访客的 IP 地址,这个方法有特定的危险性。面试
四、在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预约义变量(1)中;而连接到当前页面的的前一页面URL记录在预约义变量(2)中 <?php
//本页地址,SCRIPT_NAME也能够:php/test.php
echo $_SERVER['PHP_SELF'].”<br />”;
//连接到当前页面的前一页面的 URL 地址:
echo $_SERVER['HTTP_REFERER'].”<br />”;正则表达式
五、 执行程序段<?php echo 8%(-2) ?>将输出__。sql
<?php
//参考手册》语言参考》运算 符》算术运算符》%为取模运算,输出0
echo 8%(-2).”<br />”;
//取模 $a % $b 在 $a 为负值时的结果也是负值。输出-2
echo ((-8)%3).”<br />”;
//输出2
echo (8%(-3)).”<br />”;
?>数据库
六、写出一个正则表达式,过虑网页上的全部JS/VBS脚本(即把script标记及其内容都去掉):express
<?php
$script=” 如下内容不显示:<script language=’javascript’>alert(‘cc’);</script>”;
echo preg_replace(“/<script[^>].*?>.*?</script>/si”, “替换内容”, $script);缓存
七、实现中文字串截取无乱码的方法。
mb_substr()
八、优化MYSQL数据库的方法。
(1).数据库设计方面,这是DBA和Architect的责任,设计结构良好的数 据库,必要的时候,去正规化(英文是这个:denormalize,中文翻译成啥我不知道),容许部分数据冗余,避免JOIN操做,以提升查询效率
(2). 系统架构设计方面,表散列,把海量数据散列到几个不一样的表里面.快慢表,快表只留最新数据,慢表是历史存档.集群,主服务器Read & write,从服务器read only,或者N台服务器,各机器互为Master
(3).(1)和(2)超越PHP Programmer的要求了,会更好,不会不要紧.检查有没有少加索引
(4).写高效的SQL语句,看看有没有写低效的SQL语句,好比生成笛 卡尔积的全链接啊,大量的Group By和order by,没有limit等等.必要的时候,把数据库逻辑封装到DBMS端的存储过程里面.缓存查询结果,explain每个sql语句
(5).所 得皆必须,只从数据库取必需的数据,好比查询某篇文章的评论数,select count(*) … where article_id = ? 就能够了,不要先select * … where article_id = ?而后msql_num_rows.
只传送必须的SQL语 句,好比修改文章的时候,若是用户只修改了标题,那就update … set title = ? where article_id = ?不要set content = ?(大文本)
(6).必要的时候用不一样的存储引擎.好比InnoDB能够减小死锁.HEAP能够提升一个数量 级的查询速度
九、.“===” 是什么?试举一个“==”是真但“===”是假的例子。
“===”是给既能够送回布尔值“假”,也能够送回一个不是布尔值但却能够赋与“假”值的 函式,strpos() 和 strrpos() 即是其中两个例子。
问题的第二部份有点困难,想一个“==”是假,可是“===”是真的例子却 很容易,相反的例子却不多。但我终于找到如下的例子:
if (strpos(“abc”, “a”) == true){ // 这部分永不会被执行,由于 “a” 的位置是 0,换算成布尔值“假”}if (strpos(“abc”, “a”) === true){ // 这部份会被执行,由于“===”保证函式 strpos() 的送回值不会换算成布尔值.}
十、如下的代码会产生什么?为何?
$num =10;
function multiply(){
$num =$num *10;
}
multiply();
echo $num;
由 于函式 multiply() 没有指定 $num 为全域变量(例如 global $num 或者 $_GLOBALS['num']),因此 $num 的值是 10。
11写一个函数,可以遍历一个文件夹下的全部文件和子文件夹。 答: function my_scandir($dir) { $files = array(); if ( $handle = opendir($dir) ) { while ( ($file = readdir($handle)) !== false ) { if ( $file != ".." && $file != "." ) { if ( is_dir($dir . "/" . $file) ) { $files[$file] = scandir($dir . "/" . $file); }else { $files[] = $file; } } } closedir($handle); return $files; } }