1. 中国語の文字列を文字化けせずにインターセプトする方法。 (3 点)
答え: function GBsubstr($string, $start, $length) {
if(strlen($string)>$length){
$str=null;
$len=$start+$length;
for($i=$start;$i if(ord(substr($string,$i,1))>0xa0){
$str.=substr($string,$ i,2);
$i++;
}else{
$str.=substr($string,$i,1);
}
}
return $str.'...';
}else{
return $string;
}
}
2. メールの形式が正しいかどうかを検証する関数を書いてください (2 点)
答え: function checkEmail($email)
{
$pregEmail = "/([a- z0-9 ]*[-_.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[.][ a-z]{ 2,3}([.][a-z]{2})?/i";
return preg_match($pregEmail,$email);
}
3. 以下を完了します:
(1) を作成します。ニュースリリースシステム、テーブル名メッセージには以下のフィールドがあります(3点)
id記事id
title記事タイトル
content記事コンテンツ
category_id記事カテゴリid
ヒットクリック数
答え: CREATE TABLE 'message'(
'id' int(10) NOT NULL auto_increment,
'title' varchar(200) デフォルト NULL,
'content' text,
'category_id' int(10) NOT NULL,
'hits' int(20),
PRIMARY KEY(' id');
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
(2) 上記と同じニュースリリースシステム: コメントテーブルはユーザーの返信内容を記録し、フィールドは次のとおりです (4 点)
Comment_id 返信 ID
id メッセージテーブルのidに関連付けられた記事のid
comment_content 返信内容
次に、データベースにクエリを実行して、次の形式で記事タイトルのリストを取得し、返信の数で並べ替える必要があります。最も高い返信が一番上に表示されます
記事 ID 記事タイトルのクリック数 返信数
SQL ステートメントを使用して上記のクエリを完了します 記事に返信しない場合、返信数は 0 と表示されます
回答: SELECT メッセージ。 id id,message.title タイトル,IF(message.`hits` IS NULL,0,message.`hits`) ヒット数,
IF(comment.`id` is NULL,0,count(*)) 番号 FROM メッセージ LEFT JOIN
comment ON message.id=comment.id GROUP BY message.`id`;
(3) 上記コンテンツ管理システムでは、テーブルカテゴリに分類情報が保存されており、そのフィールドは以下の通り(3点)
category_id int(4) not null auto_increment;
categroy_name varchar(40) not null;
ユーザーが記事を入力すると、ドロップダウン メニューを選択することで記事カテゴリが選択されます
このドロップダウン メニューの実装方法を記述してください
答え: function categoryList ()
{
$result=mysql_query("select category_id,category_name from category")
or die("無効なクエリ: " .mysql_error());
print("");
}
4. 2 つのファイルの相対パスを計算する関数を作成します。
例えば、$a = '/a/b/c/d/e.php';
$b = '/a/b/12/34/c.php';
$bとの相対関係を計算します。 $a パスは http://www.cnblogs.com/c/d で、() を追加する必要があります。
答え: function getRelativePath($a, $b) {
$returnPath = array(dirname($b)); $arrA = 爆発('/', $a);
$arrB = 爆発('/', $returnPath[0]);
for ($n = 1, $len = count($arrB); $n < ; $len ; $n++) {
$returnPath = array_merge( $returnPath, array_fill(1, $len - $n, '..'));
}
$returnPath = array_merge($returnPath, array_slice( $arrA, $n));
return implode('/' , $returnPath);
echo getRelativePath($a, $b);
5. フォルダー内のすべてのファイルとサブフォルダーをスキャンできる関数を作成します。 。
答え: nFunction My_Scandir ($ DIR) {
$ Files = Array ();
IF ($ hand = OpenDIR ($ DIR)) {
($ Dir. "/". $ File);
$ FILES [] = $ File;}}}
Closedir ($ handle); フォーラムでの無制限の分類の実装原理を簡単に説明します。
答え:
//カテゴリID変数$category_idを指定し、カテゴリのすべてのサブカテゴリを返します
//$default_categoryはデフォルトで選択されたカテゴリです
function Get_Category($category_id = 0,$level = 0, $default_category = 0)
{
global $DB;
$sql = "SELECT * FROM category ORDER BY categoryID DESC";
$result = $DB->query( $sql );
while ($rows = $DB->fetch_array($result))
{
$category_array[$rows[カテゴリ親ID]][$rows[カテゴリID]] = array('id' => $rows[カテゴリID], '親' = > $rows[categoryParentID], 'name' => $rows
[categoryName]);
if (!isset($category_array[$category_id]))
{
return "";
}
{
if ($category['id'] == $default_category)
{
echo " }else
{
echo " }
if ($level > 0)
echo " >" . str_repeat( " ", $level ) . " " . $category['name'] . "n";
}
else
{
echo ">" . $category['名前'] . "n";
}
Get_Category($key, $level + 1, $default_category);
}
unset($category_array[$category_id]);
}
//分別idを指定し、その後返回数组
function category_array($category_id = 0,$level=0)
{
global $DB;
$sql = "SELECT * FROM category ORDER BY categoryID 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
{
関数get_category($ category_id = 0、$ level = 0、$ default_category = 0)
{
echo $ category_id; 'id' => 1, '親' => '1111'),
'2' => 2, '親' => 0, 'name' => '2222'),
'4' => array('id' => 0, 'name' => '4444')
) ,
'1' => array(
'3' => array('id' => 3, 'parent' => 1, 'name' => '333333'),
「5」 => array('id' => 5, 'parent' => 1, 'name' => '555555')
'3' => 配列(
'6' => ; array('id' => 6, 'parent' => 3, 'name' => '66666'),
'7' => 7, 'parent' => 3、「名前」=> '77777')
),
'4' => array(
'8' => array('id' => 8, 'parent' => 4, 'name' => '8888'),
'9' =&g t; 配列('id' => 9, '親' => 4, '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['名前'] 。 "n";
}else{
$txt1 = ">" 。 $cate['名前'] 。 "n";
$val = $txt.$txt1;
self::Get_カテゴリ($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();
return $out;
}}
$id =$_GET['id'];echo "";
?>
二日期の差数、例: 2007-2-5 ~ 2007-3-6 の日期差数
方法一:
class Dtime
{
function get_days($date1, $date2)
{
$time1 = strtotime($date1);
$time2 = strtotime($date2);
return ($time2-$time1)/86400;
}
}
$Dtime = new Dtime;
echo $Dtime->get_days('2007-2-5', '2007-3-6');
方法 2:
$temp =explode('-', '2007-2-5');
$time1 = mktime(0, 0, 0, $temp[1], $ temp[2], $temp[0]);
$temp =explode('-', '2007-3-6');
$time2 = mktime(0, 0, 0, $temp[1] , $temp[2], $temp[0]);
echo ($time2-$time1)/86400;
文字列「open_door」は「opendoor」に変換され、「make_by_id」は「makebyid」に変換されます
function changeStyle($str){
$arr =explode('_',$str);
$new_str = '';
foreach($arr as $v){
$new_str .= ucfirst( $v );
}
return $new_str;
}
echo changeStyle('open_door')."
" //OpenDoor
echo changeStyle('make_by_id'); //MakeById
次の配列 $arr1 を配列 $arr2 に変換するプログラムを書くのに必要です:
$arr1 = array (
'0' => array ('fid' => 1, 'tid' = > 1 , '名前' =>'名前1' ),
'1' => 配列 ('fid' => 1, 'tid' => 2 , '名前' =>' Name2' ) ,
'2' => array ('fid' => 1, 'tid' => 5 , 'name' =>'Name3' ),
'3' => 配列 ('fid' => 1, 'tid' => 7 , 'name' =>'Name4' ),
'4' => 3、 'Tid' => 9、 'name' name ')
'2' => array ( 'tid' => ; array ( 'tid' => 7, 'name' => 'Name4')
),
'1' = > gt;array ( 'tid' => 9, 'name' => 'Name5' )
)
);
実装コードは次のとおりです。 php
$arr1 = array (
'fid' = > 1, 'tid' => 2 , 'name' =>'Name2' ),
'2' => ('fid' => 1, 'tid' => 5 , 'name' =>'Name3' ),
'3' => array ('fid' => 1, 'tid' ' => 7 , '名前' => '名前4' ),
'4' => 配列 ('fid' => 9, '名前' => ;'Name5' )
);
$arr2 = array();
$i = 0;foreach($arr1 as $key=>$val)
{unset($val['fid' ]); //キー値が fid である要素の設定を解除 (削除)
$arr2[$i][] = $val;if($key == 3)
$i++;}
echo '< pre>';print_r($arr2);
echo '';?>
//挿入ソート(1次元配列)
function insert_sort ($arr){
$count = count($arr ; $j] > $tmp){
$arr[$j+1] = $arr[$j]
$arr[$j]; = $tmp;
$j--;
Return $arr; //選択ソート(1次元配列)function select_sort($arr){
$count = count($arr);
for($i=0; $i
$k = $i;
for($j=$i+1; $j
if ($arr[$k] > $arr[$j])
$k = $j;
if ($k != $i){
$tmp = $arr[$i];
$arr[$i] = $arr[$k];
$arr[$k] = $tmp;
}
}
return $arr;
//冒泡排序(一维数组)
function bubble_sort($array){
$count = count($array);
if ($count
for($i=0; $i
for($j=$count-1; $j>$i; $j--){
if ($array[ $j]
$tmp = $array[$j];
$array[$j] = $array[$j-1];
$array[$j-1] = $tmp;
}
}
return $array;
//快速排序(一维数组)
function Quick_sort($array){
if (count($array)
$key = $array[0];
$left_arr = array();
$right_arr = array();
for ($i=1; $i if ($array[$i] <= $key) $left_arr[] = $array[$i ]; else $right_arr[] = $array[$i]; $left_arr = Quick_sort($left_arr); $right_arr = Quick_sort($right_arr); return array_merge($left_arr, array($key), $right_arr);