PHP教程之PHP面試題

編程題:

1. 寫(xiě)一個(gè)函數(shù)壁熄,盡可能高效的核偿,從一個(gè)標(biāo)準(zhǔn) url 里取出文件的擴(kuò)展名

例如:http://www.sina.com.cn/abc/de/fg.PHP?id=1需要取出 php 或 .php

答案1:

function getExt($url){

$arr = parse_url($url);

$file = basename($arr['path']);

$ext = explode(".",$file);

return $ext[1];

}

答案2:

function getExt($url) {

$url = basename($url);

$pos1 = strpos($url,".");

$pos2 = strpos($url,"?");

if(strstr($url,"?")){

return substr($url,$pos1 + 1,$pos2 -$pos1 - 1);

} else {

return substr($url,$pos1);

}

}

2. 在 HTML 語(yǔ)言中诚欠,頁(yè)面頭部的 meta標(biāo)記可以用來(lái)輸出文件的編碼格式,以下是一個(gè)標(biāo)準(zhǔn)的 meta 語(yǔ)句

請(qǐng)使用 PHP 語(yǔ)言寫(xiě)一個(gè)函數(shù)漾岳,把一個(gè)標(biāo)準(zhǔn) HTML 頁(yè)面中的類似 meta 標(biāo)記中的 charset 部分值改為 big5

請(qǐng)注意:

1. 需要處理完整的 html 頁(yè)面轰绵,即不光此 meta 語(yǔ)句

2. 忽略大小寫(xiě)

3. ' 和 " 在此處是可以互換的

4. 'Content-Type' 兩側(cè)的引號(hào)是可以忽略的,但 'text/html; charset=gbk' 兩側(cè)的不行

5. 注意處理多余空格

$str=File_get_contents(‘xxx.php’);

Preg_replace(‘//’,‘//’,$str)

3. 寫(xiě)一個(gè)函數(shù)尼荆,算出兩個(gè)文件的相對(duì)路徑

如 $a ='/a/b/c/d/e.php';

$b ='/a/b/12/34/c.php';

計(jì)算出 $b 相對(duì)于 $a 的相對(duì)路徑應(yīng)該是 ../../c/d將()添上

答:function getRelativePath($a, $b) {

$returnPath = array(dirname($b));

$arrA = explode('/', $a);

$arrB = explode('/', $returnPath[0]);

for ($n = 1, $len = count($arrB); $n <$len; $n++) {

if ($arrA[$n] != $arrB[$n]) {

break;

}

}

if ($len - $n > 0) {

$returnPath = array_merge($returnPath,array_fill(1, $len - $n, '..'));

}

$returnPath = array_merge($returnPath,array_slice($arrA, $n));

return implode('/', $returnPath);

}

echo getRelativePath($a, $b);

填空題:

1.在PHP中左腔,當(dāng)前腳本的名稱(不包括路徑和查詢字符串)記錄在預(yù)定義變量__$_SERVER['PHP_SELF']__中;而鏈接到當(dāng)前頁(yè)面的URL記錄在預(yù)定義變量__$_SERVER['HTTP_REFERER']__

2.執(zhí)行程序段將輸出__0__。

3.在HTTP 1.0中捅儒,狀態(tài)碼 401 的含義是__未被授權(quán)__;如果返回“找不到文件”的提示液样,則可用 header 函數(shù),其語(yǔ)句為_(kāi)_header(‘location:xxx.php’)__野芒。

4.數(shù)組函數(shù) arsort 的作用是__對(duì)數(shù)組進(jìn)行逆向排序并保持索引關(guān)系__;語(yǔ)句error_reporting(2047)的作用是__報(bào)告所有錯(cuò)誤和警告__。

5.PEAR中的數(shù)據(jù)庫(kù)連接字符串格式是__双炕。

6.寫(xiě)出一個(gè)正則表達(dá)式狞悲,過(guò)慮網(wǎng)頁(yè)上的所有JS/VBS腳本(即把scrīpt標(biāo)記及其內(nèi)容都去掉):preg_replace("/].*?>.*?/si","newinfo", $script);

7.以Apache模塊的方式安裝PHP,在文件http.conf中首先要用語(yǔ)句____動(dòng)態(tài)裝載PHP模塊妇斤,然后再用語(yǔ)句____使得Apache把所有擴(kuò)展名為php的文件都作為PHP腳本處理摇锋。

LoadModule php5_module "c:/php/php5apache2.dll" ,

AddTypeapplication/x-httpd-php .php,

8.語(yǔ)句 include 和 require 都能把另外一個(gè)文件包含到當(dāng)前文件中,它們的區(qū)別是____;為了避免多次包含同一文件站超,可以用語(yǔ)句__require_once||include_once__來(lái)代替它們荸恕。

9.類的屬性可以序列化后保存到 session 中,從而以后可以恢復(fù)整個(gè)類死相,這要用到的函數(shù)是__unserialize__融求。

10.一個(gè)函數(shù)的參數(shù)不能是對(duì)變量的引用,除非在php.ini中把__allow_call_time_pass_reference boolean__設(shè)為on.

11.SQL中LEFT JOIN的含義是__自然左外鏈接__算撮。如果 tbl_user記錄了學(xué)生的姓名(name)和學(xué)號(hào)(ID)生宛,tbl_score記錄了學(xué)生(有的學(xué)生考試以后被開(kāi)除了县昂,沒(méi)有其記錄)的學(xué)號(hào)(ID)

和考試成績(jī)(score)以及考試科目(subject),要想打印出各個(gè)學(xué)生姓名及對(duì)應(yīng)的的各科總成績(jī)陷舅,則可以用SQL語(yǔ)句__select? *? fromtbl_user left jion tbl_score on tbl_user.id=tbl_score.uid__倒彰。

12.在PHP中,heredoc是一種特殊的字符串莱睁,它的結(jié)束標(biāo)志必須____待讳。

<<

Sdashkdhklahdklh

EOT

編程題:

13.寫(xiě)一個(gè)函數(shù),能夠遍歷一個(gè)文件夾下的所有文件和子文件夾仰剿。

答:

function my_scandir($dir)

{

$files = array();

if ( $handle = opendir($dir) ) {

while ( ($file = readdir($handle)) !==false ) {

$file=$dir.’/’.$file

if ( $file != ".."&& $file != "." ) {

if ( is_dir($dir ."/" . $file) ) {

$files[$file] =scandir($dir . "/" . $file);

}else {

$files[] = $file;

}

}

}

closedir($handle);

return $files;

}

}

14.簡(jiǎn)述論壇中無(wú)限分類的實(shí)現(xiàn)原理创淡。

答:


/*

數(shù)據(jù)表結(jié)構(gòu)如下:

CREATE TABLE `category` (

`categoryID` smallint(5) unsigned NOT NULLauto_increment,

`categoryParentID` smallint(5) unsigned NOTNULL default '0',

`categoryName` varchar(50) NOT NULL default'',

PRIMARY KEY (`categoryID`)

) ENGINE=MyISAM DEFAULTCHARSET=gbk;

INSERT INTO `category` (`categoryParentID`, `categoryName`) VALUES

(0, '一級(jí)類別'),

(1, '二級(jí)類別'),

(1, '二級(jí)類別'),

(1, '二級(jí)類別'),

(2, '三級(jí)類別'),

(2, '333332'),

(2, '234234'),

(3, 'aqqqqqd'),

(4, '哈哈'),

(5, '66333666');

*/

//指定分類id變量$category_id,然后返回該分類的所有子類

//$default_category為默認(rèn)的選中的分類

functionGet_Category($category_id = 0,$level = 0, $default_category = 0)

{

global $DB;

$sql = "SELECT * FROM category ORDER BYcategoryID DESC";

$result = $DB->query( $sql );

while ($rows = $DB->fetch_array($result))

{

$category_array[$rows[categoryParentID][$rows[categoryID]= array('id' => $rows[categoryID], 'parent' => $rows[categoryParentID],'name' => $rows

[categoryName]);

}

if (!isset($category_array[$category_id]))

{

return "";

}

foreach($category_array[$category_id] AS $key=> $category)

{

if ($category['id'] == $default_category)

{

echo "

}else

{

echo "

}

if ($level > 0)

{

echo ">" . str_repeat( "", $level ) . " " . $category['name'] ."\n";

}

else

{

echo ">" . $category['name'] ."\n";

}

Get_Category($key, $level + 1,$default_category);

}

unset($category_array[$category_id]);

}

/*

函數(shù)返回的數(shù)組格式如下所示:

Array

(

[1] => Array ( [id] => 1 [name] => 一級(jí)類別[level] => 0 [ParentID] => 0 )

[4] => Array ( [id] => 4 [name] => 二級(jí)類別[level] => 1 [ParentID] => 1 )

[9] => Array ( [id] => 9 [name] => 哈哈[level] => 2 [ParentID] => 4 )

[3] => Array ( [id] => 3 [name] => 二級(jí)類別[level] => 1 [ParentID] => 1 )

[8] => Array ( [id] => 8 [name] =>aqqqqqd [level] => 2 [ParentID] => 3 )

[2] => Array ( [id] => 2 [name] => 二級(jí)類別[level] => 1 [ParentID] => 1 )

[7] => Array ( [id] => 7 [name] =>234234 [level] => 2 [ParentID] => 2 )

[6] => Array ( [id] => 6 [name] =>333332 [level] => 2 [ParentID] => 2 )

[5] => Array ( [id] => 5 [name] => 三級(jí)類別[level] => 2 [ParentID] => 2 )

[10] => Array ( [id] => 10 [name] =>66333666 [level] => 3 [ParentID] => 5 )

)

*/

//指定分類id,然后返回?cái)?shù)組

functionCategory_array($category_id = 0,$level=0)

{

global $DB;

$sql = "SELECT * FROM category ORDER BYcategoryID DESC";

$result = $DB->query($sql);

while ($rows = $DB->fetch_array($result))

{

$category_array[$rows['categoryParentID'][$rows['categoryID']= $rows;

}

foreach ($category_array AS $key=>$val)

{

if ($key == $category_id)

{

foreach ($val AS $k=> $v)

{

$options[$k] =

array(

'id' => $v['categoryID'], 'name' =>$v['categoryName'], 'level' => $level, 'ParentID'=>$v['categoryParentID']

);

$children = Category_array($k, $level+1);

if (count($children) > 0)

{

$options = $options + $children;

}

}

}

}

unset($category_array[$category_id]);

return $options;

}

?>


class cate

{

function Get_Category($category_id =0,$level = 0, $default_category = 0)

{

echo $category_id;

$arr = array(

'0' => array(

'1' =>array('id' => 1, 'parent' => 0, 'name' => '1111'),

'2' =>array('id' => 2, 'parent' => 0, 'name' => '2222'),

'4' =>array('id' => 4, 'parent' => 0, 'name' => '4444')

),

'1' => array(

'3' =>array('id' => 3, 'parent' => 1, 'name' => '333333'),

'5' =>array('id' => 5, 'parent' => 1, 'name' => '555555')

),

'3' => array(

'6' =>array('id' => 6, 'parent' => 3, 'name' => '66666'),

'7' =>array('id' => 7, 'parent' => 3, 'name' => '77777')

),

'4' => array(

'8' =>array('id' => 8, 'parent' => 4, 'name' => '8888'),

'9' =>array('id' => 9, 'parent' => 4, 'name' => '9999')

)

);

if (!isset($arr[$category_id]))

{

return "";

}

foreach($arr[$category_id] AS $key=> $cate)

{

if ($cate['id'] ==$default_category)

{

$txt = "

}else{

$txt = "

}

if ($level > 0)

{

$txt1 = ">" .str_repeat( "-", $level ) . " " . $cate['name'] ."\n";

}else{

$txt1 = ">" .$cate['name'] . "\n";

}

$val = $txt.$txt1;

echo $val;

self::Get_Category($key,$level + 1, $default_category);

}

}

function getFlush($category_id =0,$level = 0, $default_category = 0)

{

ob_start();

self::Get_Category($category_id,$level, $default_category);

$out = ob_get_contents();

ob_end_clean();

return $out;

}

}

$id =$_GET['id'];

echo"";

$c = new cate();

//$c->Get_Category();

$ttt=? $c->getFlush($id,'0','3');

echo $ttt;

echo"";

?>

著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán)酥馍,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處辩昆。互聯(lián)網(wǎng)+時(shí)代旨袒,時(shí)刻要保持學(xué)習(xí)汁针,攜手千鋒PHP,Dream It Possible。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末砚尽,一起剝皮案震驚了整個(gè)濱河市施无,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌必孤,老刑警劉巖猾骡,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異敷搪,居然都是意外死亡兴想,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門赡勘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)嫂便,“玉大人,你說(shuō)我怎么就攤上這事闸与”刑妫” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵践樱,是天一觀的道長(zhǎng)厂画。 經(jīng)常有香客問(wèn)我,道長(zhǎng)拷邢,這世上最難降的妖魔是什么袱院? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上坑填,老公的妹妹穿的比我還像新娘抛人。我一直安慰自己,他們只是感情好脐瑰,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布妖枚。 她就那樣靜靜地躺著,像睡著了一般苍在。 火紅的嫁衣襯著肌膚如雪绝页。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,146評(píng)論 1 297
  • 那天寂恬,我揣著相機(jī)與錄音续誉,去河邊找鬼。 笑死初肉,一個(gè)胖子當(dāng)著我的面吹牛酷鸦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播牙咏,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼臼隔,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了妄壶?” 一聲冷哼從身側(cè)響起摔握,我...
    開(kāi)封第一講書(shū)人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎丁寄,沒(méi)想到半個(gè)月后氨淌,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡伊磺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年盛正,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屑埋。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡豪筝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出雀彼,到底是詐尸還是另有隱情壤蚜,我是刑警寧澤即寡,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布徊哑,位于F島的核電站,受9級(jí)特大地震影響聪富,放射性物質(zhì)發(fā)生泄漏莺丑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望梢莽。 院中可真熱鬧萧豆,春花似錦、人聲如沸昏名。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)轻局。三九已至洪鸭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間仑扑,已是汗流浹背览爵。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留镇饮,地道東北人蜓竹。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像储藐,于是被迫代替她去往敵國(guó)和親俱济。 傳聞我的和親對(duì)象是個(gè)殘疾皇子宇智,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 編程題: 1. 寫(xiě)一個(gè)函數(shù)糟红,盡可能高效的贱田,從一個(gè)標(biāo)準(zhǔn) url 里取出文件的擴(kuò)展名 例如:http://www.si...
    vardump閱讀 954評(píng)論 0 7
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理玄柏,服務(wù)發(fā)現(xiàn)嗦嗡,斷路器趋观,智...
    卡卡羅2017閱讀 134,651評(píng)論 18 139
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問(wèn)題, 分享了一些自己做題目的經(jīng)驗(yàn)狐胎。 張土汪:刷leetcod...
    土汪閱讀 12,743評(píng)論 0 33
  • ¥開(kāi)啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開(kāi)一個(gè)線程特姐,因...
    小菜c閱讀 6,401評(píng)論 0 17
  • Correctness AdapterViewChildren Summary: AdapterViews can...
    MarcusMa閱讀 8,863評(píng)論 0 6