本文是整理其餘人的文章所得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; } }