『壹』 php一道選擇題
答案: C
解釋:
在php語言里,對於數字式字元與數字如何參與運算,在具體情況下會視情來確定,請比較以下代碼:
echo "3+4+5";結果:3+4+5
為什麼會1+2+"3+4+5"結果會是6呢?
echo這個函數(或說是指令),其後跟的參數可以是字元串,也可以是需要運算的表達式,當出現:
echo "3+4+5";echo會認為這是個字元串
而echo 1+2+"3+4+5";echo會認為這是個表達式,所以會對這個表達式進行運算。
在這個運算過程中,1+2等於3,那麼為什麼"3+4+5"為什麼會等於3呢?因為,在php中,對於運算式中,不同數據類型的數據在參與數據時,php會進行數據轉換,以盡量確保使表達式成功運行,在"3+4+5"前面的運算符是 + ,那麼,php會將"3+4+5"當作數值類型,此時會隱式地進行數據類型的轉換,將這個字元串轉換成數值,而"3+4+5"轉換成數值的結果就是3,所以,整個表達式的結果是:1+2+3 = 6。
為更好的理解,作為對比,你可以參考以下代碼:
echo 1+2 . "3+4+5";
結果:
33+4+5
『貳』 (100分懸賞)幾道PHP題,速度快,准確高的多加200分
填空選擇題
1、在ASP頁面中用以下語句聲明<script language=VbScript _2___=server>腳本</script>,要求能在伺服器端運行VbScript腳本
2、把數值型轉換為字元串型的VbScript函數是_ CStr 3_;把字元串轉換為整數 VbScript函數是¬¬¬5¬cint()
3、HTML標記,可單獨使用或嵌入在各個ASP腳本單元中,以" __1____"為定界符; VBScript(或JScript)語句,可單獨使用或嵌入在各個ASP腳本單元中,以___9______為定界符,通過對"__2______"屬性的設置來決定是否在伺服器端運行;
ASP腳本命令,可單獨使用或包含在此和〈/html〉內,以"_____7____"為定界符
4、一段連接ACCESS資料庫的代碼
<% set conn=server.creatobject("adodb.connection")
Connstr= "DSN=____4___;UID=___6_____;PWD=;」
conn.open Connstr
%>
5、Session對象保存的用戶信息是存儲在___10_____;Cookie對象保存的用戶信息是存儲在____8_____
選項:
(1)< 和 〉 (2)runat (3)cstr (4)數據源的名稱 (5)cint
(6)資料庫的用戶名 (7)<% 和 %> (8)客戶端(9)<Script>和</Script> (10)伺服器端
三、判斷題
1、Vbscript只有一種數據類型,稱為Variant ( 1 wrong)
2、資料庫中的數據中最不可能為空值的是外鍵 ( 2 wrong)
3、Vbscript腳本語言不區分大小寫,而JavaScript區分大小寫 (right )
4、在特定的asp頁面中指定主要的腳本語言,格式為<%@ language=Language of Script%>,這一行聲明可以放在ASP頁面的任何位置 ( wrong)
5、一個包含動態腳本的ASP頁面直接雙擊,該頁面的內容不能正常顯示。( wrong)
6、刪除student表中學號為『200501012『的學生信息的SQL語句為
delete * from student where StudentID=』 200501012』 (right )
7、Vbscript聲明變數的時候用var;JavaScript聲明變數的時候用dim (wrong )
8、<%response.write Server.HTMLEncode(「<font color=』red』>顏色</font>」)%>將會以紅色的字體顯示「顏色」。( wrong)
9、ASP中request語句主要是用於用戶接收伺服器的數據 (wrong )
10、在用瀏覽器訪問某個網站的頁面時,可通過查看源文件的方式,修改網頁的源代碼( wrong)
四、問答題
1、ASP的工作原理 :用iis服務以網頁的形式瀏覽asp文件,
2、<form name="form1" method="post" action="">
<form name="form1" method="get" action="">
簡述Post和get方法的區別,並指出接收數據時用到的對象與方法
通過get方法提交數據,可能會帶來安全性的問題。比如一個登陸頁面。當通過get方法提交數據時,用戶名和密碼將出現在URL上。如果:
1、 登陸頁面可以被瀏覽器緩存;
2、 其他人可以訪問客戶的這台機器。
那麼,別人即可以從瀏覽器的歷史記錄中,讀取到此客戶的賬號和密碼。所以,在某些情況下,get方法會帶來嚴重的安全性問題。
建議 :在Form中,建議使用post方法。
post請求無長度限制(至少是理論上的)
表單提交中get和post方式的區別歸納如下幾點:
1. get是從伺服器上獲取數據,post是向伺服器傳送數據。
2. get是把參數數據隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到。post是通過HTTP post機制,將表單內各個欄位與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。用戶看不到這個過程。
3. 對於get方式,伺服器端用Request.QueryString獲取變數的值,對於post方式,伺服器端用Request.Form獲取提交的數據。
4. get傳送的數據量較小,不能大於2KB。post傳送的數據量較大,一般被默認為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB。
5. get安全性非常低,post安全性較高。
get有長度限制,最長不超過2048位元組(1024個漢字)
『叄』 很基礎的PHP程序員題目,要求具體步驟,一步一步的,不要解說,PHP我不會。拜託各位~題目如下。
$dsn = "mysql:dbname=shop;host=127.0.0.1";
$root = 'root'雀升喚;
$pwd = '';
$pdo = new pdo($dsn,$root,$pwd,array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
$sql = "select count(id) from shop";
$stmt = $pdo->query($sql);
$rowcount = $stmt->fetch(PDO::FETCH_ASSOC);
$rowpage = 5;
$pages = ceil($rowcount/$rowpage);
$nowpage = !empty($_GET['p']) ? intval($_GET['p']) : 1 ;
$prov = $nowpage - 1 < 1 ? 1 : $nowpage-1;
$next = $nowpage +1 >$pages ? $pages : $nowpage+1;
$start = ($nowpage-1)*$rowpage;
$sql1 = "select id, name, price, num from shop order by id limit $start,$rowpage";
$stmt1 = $pdo->query($sql1);
$info = $stmt1->fetchAll(PDO::FETCH_ASSOC);
$nowrows = $start+$rowpage;
print_r($info);
echo "總記錄數:$rowcount總頁數:$pages當前頁數:$nowpage當前頁的笑戚開始:$start結束記錄數:$nowrows<a href='page.php?p=1'>首頁</a><a href='page.php?p=$pages'>尾頁</a><a href='page.php?p=$prov'>上一頁</a><a href='page.php?p=$next'>頃凱下一頁</a>"
『肆』 PHP OOP 綾繪搷浣滈棶棰
榪欎釜灞炰簬OOP涓鐨勨滄柟娉曚覆鑱擬ethod chaining鈥.
$list = $User->where('status=1')->order('create_time')->limit(10)->select();
鍒嗚В寮錛屾寜絎﹀彿浼樺厛綰т粠宸﹀線鍙(浣犻偅鍏蜂綋鐨凙PI緇嗚妭涓嶈︼紝榪欓噷鍙鑳界粰鍑洪氫緥)
$o=$User->where('status=1')//鍏堝緱鍒癝QL鏌ヨ㈠硅薄銆
$o=$o->order('create_time');
$o=$o->limit(10)
$list =$o->select();
絳変簬鎶婁互涓婂氬彞鍚堝苟鎴愪竴鍙ワ紝鍦ㄧ被鏂規硶璁捐′笂姣忔¤佽繑鍥炰竴涓鍚岀被瀵硅薄return $o;
鍦≒HP鍔ㄦ佺被鍨嬩笂闅劇湅娓咃紝浠Java涓轟緥榪欎簺鏂規硶鐨勮繑鍥炵被鍨嬩竴鏍
public SomeClass where(String)
public SomeClass order(String)
public SomeClass limit(int n)
鏄涓縐嶆瘮杈冩湁鏁堢殑OOP璁捐℃妧宸с
緇欏嚭涓狿HP5鐨勪緥瀛
『伍』 3道PHP選擇題求答案,希望專業人士解答一下。
這位朋友,答案如下:
1、選擇B D;
2、ACD;
3、A
希望能幫到你。(Mekbo【麥客博】/2013.7.21)
『陸』 經典PHP筆試題
經典PHP筆試題
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本預處理器”)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。下面是整理的關於經典PHP筆試題,歡迎閱讀!
1.考慮如下腳本。標記處應該添加什麼代碼才能讓腳本輸出字元串php?
$alpha = 'abcdefghijklmnopqrstuvwxyz';
$letters = array(15, 7, 15);
foreach($letters as $val)
{/* 這里應該加入什麼 */
}?>
A.echo chr($val);
B.echo asc($val);
C.echo substr($alpha, $val, 2);
D.echo $alpha{$val};
E.echo $alpha{$val+1}
答案解析:substr 函數能夠勝任,但考慮到輸出三個字母就需要三次調用該函數,所以排除此方法。那麼$alpha{$val}和$alpha{$val+1}是僅有的兩個可能輸出題目要求的字元串的選項。因為 0 是數
組的第一個索引,所以答案是 D。
2. 以下哪一項不能把字元串$s1 和$s2 組成一個字元串?
A.$s1 + $s2
B.”{$s1}{$s2}”
C.$s1.$s2
D.implode(”, array($s1,$s2))
E.以上都可以
答案解析:除 A 以外的選項都能輸出題目要求的字元串。PHP中,加號+不能把兩個字元串合並成一個。
3. 變 量 $email 的 值 是 字 符 串 [email protected] , 以 下 哪 項 能 把 字 符 串 轉 化 成example.com?
A.substr($email, strpos($email, “@”));
B.strstr($email, “@”);
C.strchr($email, “@”);
D.substr($email, strpos($email, “@”)+1);
E.strrpos($email, “@”);
答案解析:substr 函數返回字元串的一部分,而 strpos 函數擅長從一個字元串中找出某個指定的子串。同時使用這兩個函數將滿足題目要求。注意,前一個函數從 0 開始索引,而後者不是,因此需
要+1。答案是 D。
4. 給定一個用逗號分隔一組值的字元串,以下哪個函數能在僅調用一次的情況下就把每個獨立的值放入一個新創建的數組?
A.strstr()
B.不可能只調用一次就完成
C.extract()
D.explode()
E.strtok()
答案解析:答案是 D。explode 函數使用一個字元串分隔另一個字元串,並把結果放入一個新建的數組。strtok 函數也可以做同樣的事,但需要多次調用。
5. 要比較兩個字元串,以下那種方法最萬能?
A.用 strpos 函數
B.用==操作符
C.用 strcasecmp()
D.用 strcmp()
答案解析:答案是 D。strcmp()提供了安全的字元串比較機制。注意,選項 C 是錯的,strcasecmp()不是一個“萬能”函數,因為它不區分大小寫。
6. 以下哪個 PCRE 正則表達式能匹配字元串 php|architect?
A..*
B.…|………
C.d{3}|d{8}
D.[az]{3}|[az]{9}
E.[a-z][a-z][a-z]|w{9}
答案解析:選項中沒有一個正則表達式能真正代表題目所給字元串的匹配方式,但是選項 A 和 E仍然能勉強匹配。選項 A 太普通了,它能夠匹配任何字元串,因此答案是 E。
7. 以下哪些函數能用來驗證字元串的完整性?(三選)
A.md5()
B.sha1()
C.str_rot13()
D.crypt()
E.crc32()
答案解析:正確答案是 A,B 和 E。用 crypt()和 str_rot13()來驗證一個字元串是否被改變,效率很低。crc32()比前面兩個函數好些,如果能容忍一些小錯誤的話,它是個不錯的選擇。
8. 哪個 PHP 函數與以下腳本在 UNIX 系統下執行的效果近似?
function my_funct ($filename)
{
$f = file_get_contents ($filename);
return explode (" ", $f);
}
?>
A.fopen()
B.fread()
C.flock()
D.split_string()
E.file()
答案解析:正確答案是 A,B 和 E。用 crypt()和 str_rot13()來驗證一個字元串是否被改變,效率很低。crc32()比前面兩個函數好些,如果能容忍一些小錯誤的話,它是個不錯的選擇。
9. 基於指定的式樣(pattern)把一個字元串分隔開並放入數組,以下哪些函數能做到?(雙
選)
A.preg_split()
B.ereg()
C.str_split()
D.explode()
E.chop()
答案解析:盡管條件不同,但 preg_split 和 explode 函數都能滿足題目要求。ereg()拿一個正則表達式匹配一個字元串;str_split()按固定長度分隔字元串;而 chop()則是 rtrim()別名,用來移除
字元串末尾處的空格。
10.以下腳本輸出什麼?
echo 'Testing ' . 1 + 2 . '45';
?>
A.Testing 1245
B.Testing 345
C.Testing 1+245
D.245
E.什麼都沒有
答案解析:本題考察你對字元串操作及操作符優先順序的認識。連接運算符(.)的優先順序比加號(+)高。因此 PHP 解釋器實際執行的運算可以表示為(‘Testing’ . 1) + (2 . ‘45’)。由於字元串
test 1 不是數字,所以加號前面的運算等於 0。加號後面的運算等於 245,PHP 輸出的'結果是 0+245,等於 245,所以答案是 D。
11.以下腳本輸出什麼?
$s = '12345';
$s[$s[1]] = '2';
echo $s;
?>
A.12345
B.12245
C.22345
D.11345
E.Array
答案解析:可以用訪問數組元素的方式訪問字元串中的字元,因此腳本只是把字元串中的第二個字元($s[1])替換成了字元 2,最終將輸出 12245。答案是 B。
12.方框中的正則表達式能與以下哪些選項匹配?(雙選)
/.**123d/
A.******123
B.*****_1234
C.******1234
D._*1234
E._*123
答案解析:本題的要點是理解這個正則表達式的含義——從左往右,首先是零個或多個任意字元(.*),跟著是一個星號(*),然後是 123,最後是一個數字。因此答案是 C 和 D。
13.以下哪個比較將返回 true?(雙選)
A.‘1top’ == ‘1’
B.‘top’ == 0
C.‘top’ === 0
D.‘a’ == a
E.123 == ‘123’
答案解析:B 和 E 正確。選項 B 中,在比較時,字元串 top 等同於數字 0。==操作符不比對數據類型,所以將返回 true。答案 E 中,字元串 123 等同於數字 123,比較將返回 true。
14.如果用+操作符把一個字元串和一個整型數字相加,結果將怎樣?
A.解釋器輸出一個類型錯誤
B.字元串將被轉換成數字,再與整型數字相加
C.字元串將被丟棄,只保留整型數字
D.字元串和整型數字將連接成一個新字元串
E.整形數字將被丟棄,而保留字元串
答案解析:字元串將被轉換成數字(如果無法發生轉換就是 0),然後與整型數字相加。答案是 B。
15.考慮如下腳本。假設 http://www.php.net 能被訪問,腳本將輸出什麼?
$s = file_get_contents ("http://www.php.net");
strip_tags ($s, array ('p'));
echo count ($s);
?>
A.www.php.net 的主頁的字元數
B.剔除標簽後的 www.php.net 主頁的字元數
C.1
D.0
E.剔除以外的標簽後的 www.php.net 主頁的字元數
答案解析:代碼的本意是剔除 www.php.net 主頁上除了 p 以外的的所有 HTML 標簽。可實際上,在代碼的最後一行使用了 count 函數,它統計變數中的元素數量,而不是字元串中的字元數。由於字元
串是標量,對字元串使用 count 函數將永遠返回 1。答案是 C。
16.哪個函數能不區分大小寫得對兩個字元串進行二進制比對?
A.strcmp()
B.stricmp()
C.strcasecmp()
D.stristr()
E.以上都不能
答案解析:題目其實就是在描述 strcasecmp 函數的作用,因此答案是 C。
17.以下哪些函數能把字元串里存儲的二進制數據轉化成十六進制?(雙選)
A.encode_hex()
B.pack()
C.hex2bin()
D.bin2hex()
E.printf()
答案解析:正確答案是 B 和 D。pack 函數能對二進制數據進行復雜的格式化,包括將字元串中的字元轉化成十六進製表示。bin2hex 函數也有同樣的轉化功能。注意,printf()能將整數轉化成十六進
制數,但無法轉化字元串。
18.哪個函數能用來確保一個字元串的字元數總是大於一個指定值?
答案解析:這是在說 str_pad 函數,它可以把字元串填充到指定長度。
19.以下腳本輸出什麼?
echo wordwrap ($a, 1, "c", false);
?>
答案解析:腳本將輸出 ablecostscindy。wordwrap 函數通常用來把字元串切割成指定長度。然而在本題中,長度被設置為 1,因此函數將從空格處切割(第四個參數被設置為 false,因此函數不會從
單詞的中間進行切割)。填充字元串是 c,等於把每個空格都換成了 c。
20.以下腳本輸出什麼?
echo substr_replace ($x, 'x', 1, 2);
?>
A.x
B.axle
C.axxle
D.applex
E.xapple
答案解析:腳本將輸出 ablecostscindy。wordwrap 函數通常用來把字元串切割成指定長度。然而在本題中,長度被設置為 1,因此函數將從空格處切割(第四個參數被設置為 false,因此函數不會從
單詞的中間進行切割)。填充字元串是 c,等於把每個空格都換成了 c。
;