亚洲AV无码专区国产乱码4SE,亚洲一卡2卡三卡4卡有限公司,国产亚洲高清在线精品不卡http://www.tkk7.com/lyjjq/category/47552.html我喜歡java新東西zh-cnWed, 21 Nov 2012 15:59:57 GMTWed, 21 Nov 2012 15:59:57 GMT60PHP CURLhttp://www.tkk7.com/lyjjq/articles/391506.html強強強強Sat, 17 Nov 2012 12:42:00 GMThttp://www.tkk7.com/lyjjq/articles/391506.htmlhttp://www.tkk7.com/lyjjq/comments/391506.htmlhttp://www.tkk7.com/lyjjq/articles/391506.html#Feedback0http://www.tkk7.com/lyjjq/comments/commentRss/391506.htmlhttp://www.tkk7.com/lyjjq/services/trackbacks/391506.html使用PHP的cURL庫可以簡單和有效地去抓網頁。你只需要運行一個腳本,然后分析一下你所抓取的網頁,然后就可以以程序的方式得到你想要的數據了。無論是你想從從一個鏈接上取部分數據,或是取一個XML文件并把其導入數據庫,那怕就是簡單的獲取網頁內容,cURL
是一個功能強大的PHP庫。


PHP中的CURL函數庫(Client URL Library Function)


curl_close — 關閉一個curl會話
curl_copy_handle —
拷貝一個curl連接資源的所有內容和參數
curl_errno — 返回一個包含當前會話錯誤信息的數字編號
curl_error —
返回一個包含當前會話錯誤信息的字符串
curl_exec — 執行一個curl會話
curl_getinfo —
獲取一個curl連接資源句柄的信息
curl_init — 初始化一個curl會話
curl_multi_add_handle —
向curl批處理會話中添加單獨的curl句柄資源
curl_multi_close — 關閉一個批處理句柄資源
curl_multi_exec —
解析一個curl批處理句柄
curl_multi_getcontent — 返回獲取的輸出的文本流
curl_multi_info_read —
獲取當前解析的curl的相關傳輸信息
curl_multi_init —
初始化一個curl批處理句柄資源
curl_multi_remove_handle —
移除curl批處理句柄資源中的某個句柄資源
curl_multi_select — Get all the sockets associated with
the cURL extension, which can then be "selected"
curl_setopt_array —
以數組的形式為一個curl設置會話參數
curl_setopt — 為一個curl設置會話參數
curl_version —
獲取curl相關的版本信息


curl_init()函數的作用初始化一個curl會話,curl_init()函數唯一的一個參數是可選的,表示一個url地址。
curl_exec()函數的作用是執行一個curl會話,唯一的參數是curl_init()函數返回的句柄。
curl_close()函數的作用是關閉一個curl會話,唯一的參數是curl_init()函數返回的句柄。


例子一: 基本例子
基本例子
﹤?php
// 初始化一個 cURL 對象
$curl = curl_init();


// 設置你需要抓取的URL
curl_setopt($curl, CURLOPT_URL, 'http://www.cmx8.cn');


// 設置header
curl_setopt($curl, CURLOPT_HEADER, 1);


// 設置cURL 參數,要求結果保存到字符串中還是輸出到屏幕上。
curl_setopt($curl,
CURLOPT_RETURNTRANSFER, 1);


// 運行cURL,請求網頁
$data = curl_exec($curl);


// 關閉URL請求
curl_close($curl);


// 顯示獲得的數據
var_dump($data);


?>


例子二: POST數據


sendSMS.php,其可以接受兩個表單域,一個是電話號碼,一個是短信內容。
POST數據
﹤?php
$phoneNumber = '13812345678';
$message = 'This message was generated by curl and php';
$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' . urlencode($message) . '&SUBMIT=Send';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.lxvoip.com/sendSMS.php');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec();
curl_close($ch);
?﹥


例子三:使用代理服務器
使用代理服務器
﹤?php 
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.cmx8.cn');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_PROXY, 'proxy.lxvoip.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');
$data = curl_exec();
curl_close($ch);
?﹥


例子四: 模擬登錄


Curl 模擬登錄 discuz 程序,適合DZ7.0,將username改成你的用戶名,userpass改成你的密碼就可以了.
Curl 模擬登錄
discuz
程序
<?php


!extension_loaded('curl')
&& die('The curl extension is not
loaded.');

$discuz_url =
'http://www.lxvoip.com';//論壇地址
$login_url = $discuz_url
.'/logging.php?action=login';//登錄頁地址
$get_url = $discuz_url
.'/my.php?item=threads';
//我的帖子

$post_fields =
array();
//以下兩項不需要修改
$post_fields['loginfield']
= 'username';
$post_fields['loginsubmit'] =
'true';
//用戶名和密碼,必須填寫
$post_fields['username']
= 'lxvoip';
$post_fields['password'] =
'88888888';
//安全提問
$post_fields['questionid']
= 0;
$post_fields['answer'] =
'';
//@todo驗證碼
$post_fields['seccodeverify']
=
'';

//獲取表單FORMHASH
$ch
= curl_init($login_url);
curl_setopt($ch, CURLOPT_HEADER,
0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,
1);
$contents =
curl_exec($ch);
curl_close($ch);
preg_match('/<input\s*type="hidden"\s*name="formhash"\s*value="(.*?)"\s*\/>/i',
$contents, $matches);
if(!empty($matches))
{
$formhash =
$matches[1];
} else
{
die('Not found the
forumhash.');
}

//POST數據,獲取COOKIE
$cookie_file
= dirname(__FILE__) . '/cookie.txt';
//$cookie_file =
tempnam('/tmp');
$ch =
curl_init($login_url);
curl_setopt($ch, CURLOPT_HEADER,
0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,
1);
curl_setopt($ch, CURLOPT_POST,
1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
$post_fields);
curl_setopt($ch, CURLOPT_COOKIEJAR,
$cookie_file);
curl_exec($ch);
curl_close($ch);

//帶著上面得到的COOKIE獲取需要登錄后才能查看的頁面內容
$ch
= curl_init($get_url);
curl_setopt($ch, CURLOPT_HEADER,
0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,
0);
curl_setopt($ch, CURLOPT_COOKIEFILE,
$cookie_file);
$contents =
curl_exec($ch);
curl_close($ch);

var_dump($contents);



強強 2012-11-17 20:42 發表評論
]]>
PHP中的字符串函數(String http://www.tkk7.com/lyjjq/articles/390908.html強強強強Tue, 06 Nov 2012 16:29:00 GMThttp://www.tkk7.com/lyjjq/articles/390908.htmlhttp://www.tkk7.com/lyjjq/comments/390908.htmlhttp://www.tkk7.com/lyjjq/articles/390908.html#Feedback0http://www.tkk7.com/lyjjq/comments/commentRss/390908.htmlhttp://www.tkk7.com/lyjjq/services/trackbacks/390908.html手中的PHP手冊不知道具體是哪個版本的,只知道是PHP5.1的,有94個字符串處理函數,真的是有夠多,下面開始按照從簡單到復雜的順序介紹這些函數的使用功能和使用方法:
先給出一個總表:
addcslashes
— 為字符串里面的部分字符添加反斜線轉義字符
addslashes — 用指定的方式對字符串里面的字符進行轉義
bin2hex —
將二進制數據轉換成十六進制表示
chop — rtrim() 的別名函數
chr — 返回一個字符的ASCII碼
chunk_split —
按一定的字符長度將字符串分割成小塊
convert_cyr_string — 將斯拉夫語字符轉換為別的字符
convert_uudecode —
解密一個字符串
convert_uuencode — 加密一個字符串
count_chars — 返回一個字符串里面的字符使用信息
crc32
— 計算一個字符串的crc32多項式
crypt — 單向散列加密函數
echo — 用以顯示一些內容
explode —
將一個字符串用分割符轉變為一數組形式
fprintf —
按照要求對數據進行返回,并直接寫入文檔流
get_html_translation_table — 返回可以轉換的HTML實體
hebrev —
將Hebrew編碼的字符串轉換為可視的文本
hebrevc — 將Hebrew編碼的字符串轉換為可視的文本
html_entity_decode —
htmlentities ()函數的反函數,將HTML實體轉換為字符
htmlentities —
將字符串中一些字符轉換為HTML實體
htmlspecialchars_decode —
htmlspecialchars()函數的反函數,將HTML實體轉換為字符
htmlspecialchars —
將字符串中一些字符轉換為HTML實體
implode — 將數組用特定的分割符轉變為字符串
join —
將數組轉變為字符串,implode()函數的別名
levenshtein — 計算兩個詞的差別大小
localeconv —
獲取數字相關的格式定義
ltrim — 去除字符串左側的空白或者指定的字符
md5_file — 將一個文件進行MD5算法加密
md5 —
將一個字符串進行MD5算法加密
metaphone — 判斷一個字符串的發音規則
money_format —
按照參數對數字進行格式化的輸出
nl_langinfo — 查詢語言和本地信息
nl2br — 將字符串中的換行符“\n”替換成“<br
/>”
number_format — 按照參數對數字進行格式化的輸出
ord — 將一個ASCII碼轉換為一個字符
parse_str
— 把一定格式的字符串轉變為變量和值
print — 用以輸出一個單獨的值
printf —
按照要求對數據進行顯示
quoted_printable_decode — 將一個字符串加密為一個8位的二進制字符串
quotemeta —
對若干個特定字符進行轉義
rtrim — 去除字符串右側的空白或者指定的字符
setlocale —
設置關于數字,日期等等的本地格式
sha1_file — 將一個文件進行SHA1算法加密
sha1 —
將一個字符串進行SHA1算法加密
similar_text — 比較兩個字符串,返回系統認為的相似字符個數
soundex —
判斷一個字符串的發音規則
sprintf — 按照要求對數據進行返回,但是不輸出
sscanf —
可以對字符串進行格式化
str_ireplace — 像str_replace()函數一樣匹配和替換字符串,但是不區分大小寫
str_pad —
對字符串進行兩側的補白
str_repeat — 對字符串進行重復組合
str_replace — 匹配和替換字符串
str_rot13 —
將字符串進行ROT13加密處理
str_shuffle — 對一個字符串里面的字符進行隨機排序
str_split —
將一個字符串按照字符間距分割為一個數組
str_word_count — 獲取字符串里面的英文單詞信息
strcasecmp —
對字符串進行大小比較,不區分大小寫
strchr — 通過比較返回一個字符串的部分strstr()函數的別名
strcmp —
對字符串進行大小比較
strcoll – 根據本地設置對字符串進行大小比較
strcspn —
返回字符連續非匹配長度的值
strip_tags — 去除一個字符串里面的HTML和PHP代碼
stripcslashes —
反轉義addcslashes()函數轉義處理過的字符串
stripos — 查找并返回首個匹配項的位置,匹配不區分大小寫
stripslashes
— 反轉義addslashes()函數轉義處理過的字符串
stristr — 通過比較返回一個字符串的部分,比較時不區分大小寫
strlen —
獲取一個字符串的編碼長度
strnatcasecmp — 使用自然排序法對字符串進行大小比較,不區分大小寫
strnatcmp —
使用自然排序法對字符串進行大小比較
strncasecmp — 對字符串的前N個字符進行大小比較,不區分大小寫
strncmp —
對字符串的前N個字符進行大小比較
strpbrk — 通過比較返回一個字符串的部分
strpos —
查找并返回首個匹配項的位置
strrchr — 通過從后往前比較返回一個字符串的部分
strrev —
將字符串里面的所有字母反向排列
strripos — 從后往前查找并返回首個匹配項的位置,匹配不區分大小寫
strrpos –
從后往前查找并返回首個匹配項的位置
strspn — 匹配并返回字符連續出現長度的值
strstr —
通過比較返回一個字符串的部分
strtok — 用指定的若干個字符來分割字符串
strtolower —
將字符串轉變為小寫
strtoupper –將字符串轉變為大寫
strtr — 對字符串比較替換
substr_compare —
對字符串進行截取后的比較
substr_count — 計算字符串中某字符段的出現次數
substr_replace —
對字符串中的部分字符進行替換
substr — 對字符串進行截取
trim — 去除字符串兩邊的空白或者指定的字符
ucfirst —
將所給字符串的第一個字母轉換為大寫
ucwords — 將所給字符串的每一個英文單詞的第一個字母變成大寫
vfprintf —
按照要求對數據進行返回,并直接寫入文檔流
vprintf — 按照要求對數據進行顯示
vsprintf —
按照要求對數據進行返回,但是不輸出
wordwrap —
按照一定的字符長度分割字符串
strtolower()函數把所有字符變成小寫,strtoupper()函數把所有字符變成大寫,ucfirst()函數將所給字符串的第一個字母轉換為大寫,ucwords()函數將所給字符串的每一個英文單詞的第一個字母變成大寫。
ucfirst()只處理字符串的首個字符,ucwords()只處理每個單詞的首字母(以空格來界定是否是單詞,“today!Hi”、“today.Hi”
會被認為是一個單詞),對于其余字母的大小寫狀態并不改變。
[php]<?php
echo strtolower("ABCD");//顯示
abcd
echo strtoupper("abcd");//顯示 ABCD
echo ucfirst("what a beautiful day
today!");//顯示 What a beautiful day today!
echo ucwords("what a beautiful day
today!");//顯示 What A Beautiful Day
Today!
?>[/php]
trim()函數去除字符串兩邊的空白或者指定的字符,ltrim()函數去除字符串左側的空白或者指定的字符,rtrim()函數去除字符串右側的空白或者指定的字符,chop()函數和rtrim()函數功能相同,這四個函數都不支持UFT-8中文字符。
[php]<?php
echo
trim("what a beautiful day today!","! adlotwy");//顯示 hat a beautifu
echo
ltrim("what a beautiful day today!","! adlotwy");//顯示 hat a beautiful day
today!
echo rtrim("what a beautiful day today!","! adlotwy");//顯示 what a
beautifu
echo chop("what a beautiful day today!","! adlotwy");//顯示 what a
beautifu
?>[/php]
echo()函數用以顯示一些內容,可以使用<<《What is the difference
between echo and print》 查看兩者的差別。echo() 和
print()后面的小括號,可加可不加。
[php]<?php
$temp = "都";
echo
$temp;//顯示“都”
echo
<<<END


$temp



END;//顯示“大家都好嗎?”
echo
"大家",$temp,"好!";//顯示“大家都好”

$temp = "都";
print $temp; //顯示“都”
print
<<<END


$temp



END;//顯示“大家都好嗎?”
?>[/php]
printf()函數可以按照要求對數據進行顯示,該函數的功能異常強大,即可以讓值在不同的字符格式和進制之間轉換,還可以實現字符補白(pad)和截取等功能。sprintf()函數,fprintf()函數的功能和printf()函數完全一樣,只不過sprintf()函數是返回結果而不是直接輸出,fprintf()必須用在將輸出寫入文檔流的時候。下面僅以printf()函數舉例:
在printf()函數的第一個參數中:
%
- 轉義字符(在%開始,字母結束的格式定義內部,使用“’”進行轉義)
b – 二進制格式輸出
c - 將ASCII值轉變為對應的值輸出
d –
有符號的十進制數輸出(整數)
e – 科學計數法輸出
u – 無符號的十進制數輸出(正數)
f – 浮點格式輸出(locale
aware)
F – 浮點格式輸出(non-locale aware)
o – 八進制格式輸出
s – 字符串格時輸出
x –
十六進制格式輸出(字母小寫)
X - 十六進制格式輸出(字母大寫)
[php]<?php
$n =  43951789;
$u =
-43951789;
$c = 65; // 'A'的ASCII值為65
printf("%b", $n);
//顯示10100111101010011010101101
printf("%c", $c); //顯示A
printf("%d", $n);
//顯示43951789
printf("%e", $n); //顯示4.39518e+7
printf("%u", $n);
//顯示43951789
printf("%u", $u); //顯示4251015507
printf("%f", $n);
//顯示43951789.000000
printf("%F", $n); //顯示43951789.000000
printf("%o",
$n); //顯示247523255
printf("%s", $n); //顯示43951789
printf("%x", $n);
//顯示29ea6ad
printf("%X", $n); //顯示29EA6AD
printf("%+d", $n);
//顯示+43951789
printf("%+d", $u);
//顯示-43951789
?>[/php]
printf的第一個參數還內置了類似正則的功能:
1、第一位是可選的一個“+”,這個符號只對數字格式的輸出有效,因為如果是負數的話,前面會有一個“-”,有時候會需要在正數前面加一個“+”,但是PHP默認是隱去“+”號顯示的,所以需要在前面加一個“+”輸出“+”號
2、第二位是可選的填充字符,用這個字符來起到填充空白的左右,功能類似str_pad()函數,保留字符可以用“’”轉義
3、第三位表示填充的方向,是可選的,“+”是默認值,表示在左側填充,“-”表示在右側填充
4、第四位表示填充完成后的長度,也是可選的,沒有這個參數就表示不進行填充
5、第五位可選參數,如果輸出是浮點數,可以控制小數點后面的個數,如果是輸出字符串,則可以用來截取字符串的長度,使用時為了和前面的參數區分,需要用“.”隔開
[php]<?php
$t
= 'many monkeys';
$n = 1213;
printf("%+d",$n); // 1、顯示
+1213
printf("%010d",$n); // 2、顯示000001213
printf("%+'#10d",$n); // 2、顯示
#####+1213
printf("%+'#-10d",$n); // 3、顯示 +1213#####
printf("%.2f",$n); //
5、顯示 1213.00
printf("%.7s",$t); // 5、顯示 many
mo
?>[/php]
了解了上面這些之后,讓我們看printf()函數的使用方法,其實就是將接受的從第二個參數以后的所有參數一個一個的在第一個參數中需要轉換的地方輸出,如果參數次序被打亂,就需要使用“2\$”這樣的字符來表明變量的位置。
[php]<?php
$num
= "tree";
$location = 10;
$format1 = "The %s contains %d
monkeys";
printf($format1, $num, $location);
//顯示 The tree contains 10
monkeys
$format2 = "The %s contains %d monkeys";
printf($format2,
$location, $num);
//顯示 The tree contains 10
monkeys
?>[/php]
vprintf()函數、vsprintf()函數、vfprintf()函數三個函數的功能和上面的printf()函數、sprintf()函數、fprintf()的功能一樣,vprintf()函數直接輸出,vsprintf()函數返回但是不輸出,vfprintf()函數直接將結果輸出到文檔流,區別就是這三個函數接受的參數都是數組形式的,而不是一個一個的變量。
這里只舉vprintf()函數的例子:
[php]<?php
$num
= "tree";
$location = 10;
$argu1 = array("tree",10);
$argu2 =
array(10,"tree");
$format1 = "The %s contains %d
monkeys";
printf($format1, $num, $location);
// 顯示 The tree contains 10
monkeys
$format1 = "The %s contains %d monkeys";
vprintf($format1,
$argu1);
// 顯示 The tree contains 10 monkeys
$format2 = "The %2\$s contains
%1\$d monkeys";
vprintf($format2, $argu2);
// 顯示 The tree contains 10
monkeys
?>[/php]
number_format()函數可以按照參數對數字進行格式化的輸出,number_format()函數最多有4個參數,第一個參數是輸出的數字,第二個參數表示保留幾位小數,第三個參數和第四個參數必須同時使用(就是說不能只用第三個參數,而不使用第四個參數),分別表示小數點的樣式和千分符的樣式,默認分別為“.”和“,”。
[php]<?php
$num
= 1234.56;
$new_num = number_format($num, 3, ".", "-");
echo $new_num; //
顯示
1-234.560
?>[/php]
money_format()函數需要C里面的strfmon()函數支持,所以需要系統能夠提供C函數庫,很顯然,windows系統無法支持此功能,所以在windows下面的PHP環境不支持money_format()函數,此函數的介紹以后再補充:(
sscanf()函數可以對字符串進行格式化,第一個參數表示需要處理的字符,第二個參數表示變量匹配的規則(匹配規則請參照上面的printf()函數),后面的參數可選,分別對應需要賦值的變量,如果僅僅只有2個參數,那么所有的變量值將以一個數組的形式返回。在下面的例子中,“%s”的匹配是貪婪的,所以在使用時要注意。
[php]<?php
$mandate
= "January 01 2000";
list($month, $day, $year) = sscanf($mandate, "%s %d
%d");
echo "$year-" .$month. "-$day";// 顯示
2000-January-1
?>[/php]
str_replace()函數可以匹配和替換字符串,第一個參數表示需要匹配的項,第二個參數表示替換的項,第三個參數表示處理的字符串。第四個參數可選,將一個變量賦值為匹配的次數,前兩個參數也可以是數組形式的。str_ireplace()函數的功能和str_replace()函數類似,只不過在匹配的時候str_ireplace()函數會忽略大小寫。
[php]<?php
$str1
= str_replace("world", "body", "hello world world");
echo $str1;// 顯示 hello
body body
$str1 = str_ireplace("WORLD", "body", "hello world world");
echo
$str1;// 顯示 hello body body

$phrase  = "You should eat fruits,
vegetables, and fiber every day.";
$healthy = array("fruits", "vegetables",
"fiber");
$yummy   = array("pizza", "beer", "ice cream");
$newphrase =
str_replace($healthy, $yummy, $phrase, $count);
echo $newphrase;// 顯示 You
should eat pizza, beer, and ice cream every day.
echo $count; // 顯示
3
?>[/php]
strtr()函數的作用是對字符串替換,strtr()函數有兩種使用方法,第一種使用三個參數,替換時會將第二個參數的字符串替換為第三個參數的字符串(如果兩個字符串參數的長度不一致,則教長的那個字符串將會被截斷),第二種方法使用兩個參數,第二個參數是一個準備進行替換處理的數組。
[php]<?php
$trans
= strtr("hello world", "world", "body");
echo $trans;//顯示 heyyo bodyd
(w=>b,o=>o,r=>d,l=>y)
$arr = array("hello" => "hi", "hi" =>
"hello");
$trans = strtr("hi all, I said hello", $arr);
echo $trans;//顯示
hello all, I said
hi
?>[/php]
strstr()函數通過比較返回一個字符串的部分。函數有兩個參數,第一個參數表示處理的字符串,第二個參數表示匹配項,返回結果為從匹配位置開始到最后的一個字符串,如果沒有匹配,則返回false。strchr()函數是strstr()函數的別名,功能和使用方法完全一樣。strrchr()函數的功能和strstr()函數類似,區別是strrchr()函數是從后向前匹配的,stristr()函數的功能和strstr()函數一樣,但是匹配是不區分字母的大小寫。strpbrk()的功能和strstr()函數類似,是在一個字母串里面找出第一個匹配項,返回以后的結果。
[php]<?php
$email
= [email=]'user@example.com'[/email];
$domain = strstr($email,
[email=]'@'[/email]);
echo $domain; // 顯示 @example.com
$exam =
strrchr($email, 'e');
echo $exam; // 顯示 e.com
$exam = stristr($email,
'EX');
echo $exam; // 顯示 example.com
$exam = strpbrk($email,
'pe');
echo $exam; // 顯示

?>[/php]
strpos()函數查找并返回首個匹配項的位置,第一個參數表示處理的字符串,第二個參數表示匹配項,第三個參數可選,表示開始執行查找的位置。stripos()函數的功能和strpos()函數類似,區別是匹配的時候不會區分大小寫。strrpos()函數和strpos()函數功能類似,區別是從后往前匹配,strripos()函數的功能和strrpos()函數類似,區別是不區分大小寫。strrpos()函數在PHP4中只支持單個字母的查找,如果參數是字符串,則截取第一個字母,PHP4不支持strripos()函數。
[php]<?php
$newstring
= 'abcdef abcdefab';
$pos = strpos($newstring, 'a', 1);
echo $pos; // 顯示
7
$pos = strrpos($newstring, 'ab', 6);
echo $pos; // 顯示
13
?>[/php]
count_chars()函數的作用是返回一個字符串里面的字符使用信息。第二個參數五個參數:
0 -
以所有的每個字節值作為鍵名,出現次數作為值的數組。
1 - 與 0 相同,但只列出出現次數大于零的字節值。
2 - 與 0
相同,但只列出出現次數等于零的字節值。
3 - 返回由所有使用了的字節值組成的字符串。
4 -
返回由所有未使用的字節值組成的字符串。
[php]<?php
$data = "this is a test
world";
print_r(count_chars($data, 1)); // 顯示用到字符信息

print_r(count_chars($data, 3)); // 顯示
adehilorstw
?>[/php]
strspn()函數的作用是匹配并返回第二個參數里面的單字符連續出現長度的值,strspn()函數的第三個參數和第四個參數可選,分別表示開始匹配的位置和返回的最大值。strcspn()函數的使用方法和strspn()函數類似,但功能卻相反,返回的是第二個參數中不匹配的字符串長度。
[php]<?php
$var
= strspn("42123 is the answer", "1234567890");
echo $var; //顯示 5
echo
strspn("faoaaol", "oa", 1, 3); // 顯示 3
echo strcspn("csdcsdfaoaaol", "oa", 1,
9); // 顯示
6
?>[/php]
substr()函數可以對字符串進行截取,substr()函數可以有三個參數,第二個參數如果是空,那么默認就為0,如果我負數,就表示從后往前計數,第三個參數如果是正數,表示字符串截取的長度,如果省略,則會一直截取到最后,如果是負數,則表示從后往前截取到的位置。
[php]<?php
echo
substr('abcdef',3, 2);  // 顯示 de
echo substr('abcdef',"", 2);  // 顯示
ab
echo substr("abcdef", -2);    // 顯示 ef
echo substr("abcdef", -3, 1); //
顯示 d
echo substr("abcdef", -3, -1); // 顯示
de
?>[/php]
substr_count()函數的作用是計算字符串中某字符段的出現次數,第三個參數表示在字符串中開始比較的位置,省略則默認從頭開始,第四個參數表示依次比較的字符數,省略則表示一直比較到末尾。和substr()函數有所不同的是,這兩個參數都不支持負數。
[php]<?php
$text
= 'This is a test';
echo substr_count($text, 'is'); // 顯示 2
echo
substr_count($text, 'is', 3); // 顯示 1
echo substr_count($text, 'is', 3, 3);
// 顯示
0
?>[/php]
substr_replace()函數的作用是對字符串中的部分字符進行替換,substr_replace()函數的第三個參數必選,表示需要處理字符的起始位置,負數表示從后往前計數,第四個參數可選,省略表示一直替換到最后,正數表示替換的長度,負數表示從后往前替換到的位置。
[php]<?php
$var
= 'ABCDEFGH:/MNRPQR/';
echo substr_replace($var, 'bob', 0); // 顯示 bob
echo
substr_replace($var, 'bob', 0, 0); // 顯示 bobABCDEFGH:/MNRPQR/
echo
substr_replace($var, 'bob', 10, -1); // 顯示 ABCDEFGH:/bob/
echo
substr_replace($var, 'bob', -7, -1); // 顯示 ABCDEFGH:/bob/
echo
substr_replace($var, '', 10, -1); // 顯示
ABCDEFGH://
?>[/php]
implode()函數的作用是將數組轉變為字符串,explode()函數的作用是將一個字符串轉變為一數組形式。implode()函數前兩個參數的位置是任意的,而explode()函數則不行。explode()函數第三個參數可選,省略則表示全部返回,正數表示返回的數組中單元的個數,最后一個單元包含了未處理完的字符串,負數表示返回值中將除去最后的若干個單元。join()函數的作用和implode()函數相同,是implode()函數的別名。
[php]<?php
$array
= array('lastname', 'email', 'phone');
echo implode($array,","); // 顯示
lastname,email,phone
$str = 'one|two|three';
print_r(explode('|',
$str));// 顯示 Array ( [0] => one [1] => two [2] => three
)
print_r(explode('|', $str, 2));// 顯示 Array ( [0] => one [1] =>
two|three )
print_r(explode('|', $str, -1));// 顯示 Array ( [0] => one
[1] => two
)
?>[/php]
strtok()函數的作用是用指定的若干個字符來分割字符串,此函數的功能較強大,但是使用方法比較特殊。在連續使用的時候,第一次需要說明字符串和分割符,但是第二次的時候,只要放入分割符就可以,分割符可以是多個內容,但是不能使用字符串,具體請研究下面的例子:
[php]<?php
$string
= "This is\tan example\nstring";
$tok = strtok($string, "
\n\t");

while ($tok !== false) {
    echo "$tok<br />";
   
$tok = strtok("
\n\t");
}
?>[/php]
str_split()函數的作用是將一個字符串按照字符間距分割為一個數組,str_split()函數有兩個參數,第二個參數可選,默認值為“1”。
[php]<?php
$str1
= "asd";
$str2 = "Hello Friend";
print_r(str_split($str1)); // 顯示 Array (
[0] => a [1] => s [2] => d )
print_r($arr2 = str_split($str2, 4));
// 顯示 Array ( [0] => Hell [1] => o Fr [2] => iend
)
?>[/php]
chunk_split()函數的作用是按一定的字符長度將字符串分割成小塊,第二個參數可選,表示字符間距,默認為76,第三個參數可選,表示用什么字符進行分割,默認為“\r\n”。
[php]<?php
$str
= "asdasdasd";
echo chunk_split($str,3,","); // 顯示
asd,asd,asd,
?>[/php]
wordwrap()函數的作用是按照一定的字符長度分割字符串,第二個參數可選,表示按多少字符進行分割,默認為75,第三個參數可選,表示用哪個字符分割,默認為“\n”,第四個參數可選,true表示強制打破一個單詞,false表示不大破單詞,默認為false。
[php]<?php
$text
= "A very long woooooooooood asdasd";
echo wordwrap($text, 12, "<br
/>\n", true); // woooooooooood被打破
echo wordwrap($text, 12, "<br
/>\n", false); //
woooooooooood未被打破
?>[/php]
strlen()函數的作用是獲取一個字符串的編碼長度。
[php]<?php
$text1
= "ABC";
$text2 = "中文";
echo strlen($text1); // 顯示 3
echo
strlen($text2); // 顯示
6
?>[/php]
str_word_count()函數的作用是獲取字符串里面的英文單詞信息,第二個參數可選,0表示只返回單詞的個數,1表示將找到的單詞作為一個數組返回,2表示找到的單詞和單詞所在的字符位置信息作為一個聯合數組(associative)返回,省略的默認值是0;第三個參數也是可選的,表示需要忽略的斷詞符號,默認的斷詞符號有空格,數字等等,有時候需要忽略一些。
[php]<?php
$str
= "Hello fri3nd, you're
       looking          good today!";
echo
str_word_count($str); // 顯示 7
print_r(str_word_count($str, 1));
// 顯示
Array ( [0] => Hello [1] => fri [2] => nd [3] => good [4] =>
today )
print_r(str_word_count($str, 2));
// 顯示 Array ( [0] => Hello
[6] => fri [10] => nd [14] => good [19] => today
)
print_r(str_word_count($str, 1, 'àá~ac3'));
// 顯示 Array ( [0] =>
Hello [1] => fri3nd [2] => good [3] => today
)
?>[/php]
nl_langinfo()函數的作用是獲取某些字符信息,但是沒有在windows平臺下實現,所以,我以后在討論。
localeconv()函數的作用是獲取數字相關的格式定義。setlocale()函數可以設置關于數字,日期等等的本地格式,相關內容較復雜,這里省略不談。這兩個函數的作用是為了解決在不同的國家地區之間,對數字,貨幣,日期等字符形式不同的表現內容而進行簡易設置的作用。
strrev()函數的作用是將字符串里面的所有字母反向排列。str_shuffle()函數的作用是對一個字符串里面的字符進行隨機排序。
[php]<?php
echo
strrev("ABC"); // 顯示 CBA
$str = 'abcdef';
echo
str_shuffle($str);
?>[/php]
str_pad()函數的作用是對字符串進行兩側的補白,第二個參數表示補白以后的長度,第三個參數可選,表示進行補白的字符串,默認為空格,第四個參數可選,表示補白的方式,有三個常量可以選擇:STR_PAD_RIGHT,STR_PAD_LEFT和STR_PAD_BOTH,分別表示右補白,左補白和兩側補白,默認值為STR_PAD_RIGHT。
[php]<?php
$input
= "Alien";
echo str_pad($input, 10);                      // 顯示 "Alien 
   "
echo str_pad($input, 10, "-=", STR_PAD_LEFT);  // 顯示
"-=-=-Alien"
echo str_pad($input, 10, "_", STR_PAD_BOTH);   // 顯示
"__Alien___"
echo str_pad($input, 6 , "___");               // 顯示
"Alien_"
?>[/php]
str_repeat()函數的作用是對字符串進行重復組合,第二個參數表示重復的次數,值為0的時候將返回一個空字符串。
[php]<?php
echo
str_repeat("ab", 3); // 顯示
ababab
?>[/php]
chr()函數的作用是返回一個字符的ASCII碼,ord()函數的作用是將一個ASCII碼轉換為一個字符。
[php]<?php
$str
= "a";
echo ord($str); // 顯示 97
$asc2 = 97;
echo chr($asc2); //顯示
a
?>[/php]
strcmp()函數的作用是對字符串進行大小比較,第一個參數大于第二個參數時返回一個大于0的數,小于則返回一個小于0的數,等于則返回0,此函數的比較結果返回值是非常令人困惑的,因而此函數的主要用處是比較兩個字符串是否相等。strncmp()函數的作用和strcmp()函數類似,區別是strncmp()函數有第三個必選參數,用來限制進行比較的前N個字符。strcasecmp()的作用和strcmp()函數類似,區別是strcasecmp()函數忽略大小寫。strncasecmp()函數的作用和strncmp()函數類似,區別是strncasecmp()函數忽略大小寫。strnatcmp()函數的作用和strcmp()函數類似,區別是strnatcmp()函數使用自然排序法對字符串之間進行比較。strnatcasecmp()函數的作用和strnatcmp()函數類似,區別是strnatcasecmp()函數比較時不區分大小寫。strcoll()函數的作用和strcmp()函數類似,區別是strcoll()函數會根據本地環境的設置而改變比較的方式,而產生不同的結果,這里暫時跳過不討論。
[php]<?php
echo
strcmp("red", "red"); // 顯示 0
echo strncmp("red apple", "red", 3); // 顯示
0
echo strcasecmp("Red", "red"); // 顯示 0
echo strncasecmp("Red apple",
"red", 3); // 顯示
0
?>[/php]
上面這些函數的另一個作用是被作為回調函數的形式使用(其實也是最主要的用途所在):
[php]<?php
$arr1
= $arr2 = array("img12.png", "img10.png", "img2.png",
"img1.png");
usort($arr1, "strcmp");
print_r($arr1); //
顯示標準排序以后的結果
usort($arr2, "strnatcmp");
print_r($arr2); //
顯示自然排序以后的結果
?>[/php]
substr_compare()函數可以對字符串進行截取后的比較,第三個參數表示比較開始的起始位置,第四個參數可選,表示進行比較的長度,省略則表示一直比較到末尾,第五個參數可選,設置為true可以忽略大小寫,false表示不忽略大小寫,默認值為false。
[php]<?php
echo
substr_compare("abcde", "bc", 1, 2); // 顯示 0
echo substr_compare("abcde",
"bcg", 1, 2); //顯示 0
echo substr_compare("abcde", "BC", 1, 2, true); //顯示
0
echo substr_compare("abcde", "bc", 1, 3); //顯示 1
echo
substr_compare("abcde", "cd", 1, 2); //顯示 -1
echo substr_compare("abcde",
"abc", 5, 1); //顯示
報錯
?>[/php]
similar_text()函數的作用是比較兩個字符串,返回系統認為的相似字符個數,第三個參數可選,可以對一個變量附值為相似度百分比。levenshtein()函數的作用是對字符串進行比較,并且返回兩個字符串的相似度,有三個可選參數,但是不知道如何使用。
<?
echo
similar_text("abcdas", "abdcas", $p); // 顯示 5
echo "$p%"; // 顯示
83.3333333333%
echo levenshtein("ab", "abcd"); // 顯示 2
echo
levenshtein("abc", "abcd"); // 顯示 1
echo levenshtein("abcd", "abcd"); // 顯示
0
?>[/php]
soundex()函數的作用是判斷一個字符串的發音規則,用4位的字符串表示。metaphone()函數的作用是判斷一個字符串的發音規則,和soundex()函數類似,但是顯示的是一個不定長的字符串。
[php]<?php
echo
soundex("Ellery");    // 顯示 E460
echo soundex("Ghosh");     // 顯示
G200
echo soundex("Heilbronn"); // 顯示 H416
echo metaphone("Ellery");    //
顯示 ELR
echo metaphone("Ghosh");     // 顯示 FX
echo metaphone("Heilbronn");
// 顯示
HLBRN
?>[/php]
addslashes()函數的作用是為字符串里面的部分字符添加反斜線轉義字符,addslashes()函數只為4個字符添加轉義,單引號“’
”,雙引號“””,反斜線“\”和NULL(“\0”)。addcslashes()函數的作用也是對字符串添加轉義,但是轉義的字符必須由第二個參數指定,第二個參數的使用方法難度太高,跳過不講。stripslashes()函數的作用和addslashes()函數正好相反,可以將addslashes()函數轉義的那4個字符取消轉義。同樣,stripcslashes()函數的作用和addcslashes()函數相反。quotemeta()函數的作用是對11個特定字符進行轉義,包括:.
\ + * ? [ ^ ] ( $ ) 似乎是可以用在正則里面。
[php]<?php
echo addslashes("'\"\ ");
// 顯示 \'\"\\
echo addcslashes("zoo['.']", 'zo'); // 顯示 \z\o\o['.']
echo
addcslashes("z\"oo['.']", '\'\"'); // 顯示 z\"oo[\'.\']
echo addcslashes('foo[
]', 'A..z'); // 顯示 \f\o\o\[ \]
echo stripslashes(addslashes("'\"\ ")); // 顯示
'"\
echo stripcslashes(addcslashes("z\"oo['.']", '\'\"')); // 顯示
z"oo['.']
echo quotemeta(". \ + * ?"); // 顯示 \. \\ \+ \*
\?
?>[/php]
htmlspecialchars()函數的作用是將字符串中一些字符轉換為HTML實體,默認情況下主要包括這4個字符:“<”,“>”,“&”和“””,分別轉換為HTML實體:“<”,“>”,“&”呵“"”。htmlentities()函數的第二個可選參數可以選擇引號的轉換模式,可以選擇三個常量:ENT_COMPAT表示轉換雙引號但是保留單引號,ENT_QUOTES表示同時轉換雙引號和單引號,ENT_NOQUOTES表示兩個都不轉換,默認值為ENT_COMPAT。第三個可選參數表示所轉換字符的編碼集。htmlspecialchars_decode()函數的作用和htmlspecialchars()函數剛好相反,但是兩個函數的使用方法一樣。
[php]<?php
$str
= "<a href='test'>Test</a>";
echo htmlspecialchars($str); //
顯示(源代碼里面) <a href='test'>Test</a>
echo htmlspecialchars($str,
ENT_QUOTES); // 顯示(源代碼里面) <a href='test'>Test</a>
$str = '<a
href='test'>Test</a>';
echo htmlspecialchars_decode($str); //
顯示(源代碼里面) <a
href='test'>Test</a>
?>[/php]
htmlentities()函數的用法和htmlspecialchars()函數類似,但是htmlspecialchars()函數會轉義更多的HTML里面的字符(請查看手冊的htmlspecialchars()函數的表格1《已支持字符集》部分),所以使用時要注意加上第三個參數。html_entity_decode()函數的作用和htmlentities()函數正好相反,但是用法完全一樣,使用時也要注意用到第三個參數。
<meta
http-equiv="Content-Type" c />
[php]<?php
$str = "<a
href='test'>中文</a>";
echo htmlentities($str,ENT_COMPAT,"UTF-8");
//顯示(源代碼里面) <a href='test'>涓枃</a>
echo
html_entity_decode(htmlentities($str,ENT_COMPAT,"UTF-8"),ENT_COMPAT,"UTF-8"); //
顯示(源代碼里面) <a
href='test'>中文</a>
?>[/php]
get_html_translation_table()函數的作用是返回可以轉換的HTML實體,算是一個比較有意思,也是有趣的工具函數。get_html_translation_table()函數有兩個常量參數,第一個參數表示所選擇顯示哪種轉換模式下的內容,HTML_ENTITIES表示大范圍的htmlentities()函數所用到的轉換內容,HTML_SPECIALCHARS表示小范圍的htmlspecialchars()函數所用到的轉換內容,第二個參數的三種模式ENT_COMPAT,ENT_QUOTES,ENT_NOQUOTES的作用,可以查看htmlspecialchars()函數里面的介紹。
[php]<?php
print_r(get_html_translation_table(HTML_SPECIALCHARS,ENT_QUOTES));
?>[/php]
/*
顯示
Array
(
    ["] => "
    ['] => &#39;
    [<]
=> <
    [>] => >
    [&] =>
&
)
*/
nl2br()函數的作用是將字符串中的換行符“\n”替換成“<br
/>”。
[php]<?php
echo nl2br("foo isn't\n bar"); // 顯示(源代碼里面) foo
isn't<br />
bar
?>[/php]
strip_tags()函數的作用是去除一個字符串里面的HTML和PHP代碼(其實好像就是去掉“<”開始“>”結尾的字符串,無所謂PHP)。第二個參數表示允許出現的標簽對。
[php]<?php
$text
= '<p>Test paragraph.</p><em>Other text</em>';
echo
strip_tags($text, '<p>'); // 顯示 <p>Test paragraph.</p>Other
text
?>[/php]
parse_str()函數的作用是把一定格式的字符串轉變為變量和值,字符串的格式和URL的格式相同。
[php]<?php
parse_str('d=12&c[]=as');
echo
$c[0]; // 顯示 as
echo $d; // 顯示
12
?>[/php]
hebrev()函數的作用是將Hebrew編碼的字符串轉換為可視的文本,hebrevc函數的作用是和hebrev()函數類似,區別是會將字符串里面的“\n”轉變為“<br>\n”。hebrev()函數和hebrevc函數的第二個參數用法相同,可以設定每行的顯示字符數,行末不會強制打斷一個單詞。
convert_cyr_string()函數的作用是將斯拉夫語字符轉換為別的字符。
bin2hex()函數的作用是將二進制數據轉換成十六進制的數據。
str_rot13函數的作用是將字符串進行ROT13加密處理,方法是將所有字符移動13個字母位置,因為英文一共是26個字母,所以該函數的加密解密可以使用同一個函數。
[php]<?php
echo
str_rot13('str_rot13'); // 顯示 fge_ebg13
echo
str_rot13(str_rot13('str_rot13')); // 顯示
str_rot13
?>[/php]
md5()函數的作用是將一個字符串進行MD5算法加密,返回一個32位的16位字符串,第二個參數如果設置為true,將會返回一個16位的2進制字符串。md5_file()函數的作用是對文件進行MD5加密,使用方式和md5()函數相同。
[php]<?php
echo
md5('apple'); //顯示 1f3870be274f6c49b3e31a0c6728957f
echo bin2hex(md5('apple',
true)); //顯示
1f3870be274f6c49b3e31a0c6728957f
?>[/php]
sha1()函數的作用是將一個字符串進行SHA1算法加密,返回一個40位的16位字符串,第二個參數如果設置為true,將會返回一個20位的2進制字符串。sha1_file()函數的作用是對文件進行SHA1加密,使用方式和sha1()函數相同。
[php]<?php
$str
= 'apple';
echo sha1('apple'); //顯示
d0be2dc421be4fcd0172e5afceea3970e2f3d940
echo bin2hex(sha1('apple', true));
//顯示
d0be2dc421be4fcd0172e5afceea3970e2f3d940
?>[/php]
crypt()函數的作用是對一個字符串進行散列處理,返回一個加密后的字符串。第二個可選參數是一個加密參考量,crypt()函數會根據這個量來產生加密的值,第二個參數如果省略,PHP將會隨機產生一個參考量;第二個參數的處理,需要根據4個PHP的預定義常量,PHP會更具預定義常量的設定,對參考量進行處理,再進行加密。
CRYPT_STD_DES
– 標準模式,獲取參考量的前兩位。
CRYPT_EXT_DES – 擴展模式,獲取參考量的前九位。
CRYPT_MD5 –
MD5模式,參考量為$1$開始的一個常量CRYPT_SALT_LENGTH指定長度的字符串。
CRYPT_BLOWFISH –
河豚模式,參考量為$2$或者$2a$開始的一個16位長的字符串。
[php]<?php
if (CRYPT_STD_DES == 1)
{
    echo 'Standard DES: ' . crypt('rasmuslerdorf', 'rl');
} // 顯示
rl.3StKT.4T8M
if (CRYPT_EXT_DES == 1) {
    echo 'Extended DES: ' .
crypt('rasmuslerdorf', '_J9..rasm');
} // 顯示 _J9..rasmBYk8r9AiWNc
if
(CRYPT_MD5 == 1) {
    echo 'MD5:          ' . crypt('rasmuslerdorf',
'$1$rasmusle$');
} // 顯示 $1$rasmusle$rISCgZzpwk3UhDidwXvin0
if
(CRYPT_BLOWFISH == 1) {
    echo 'Blowfish:     ' . crypt('rasmuslerdorf',
'$2a$07$rasmusler...........$');
} // 顯示
$2a$07$rasmuslerd............nIdrcHdxcUxWomQX9j6kvERCFjTg7Ra
?>[/php]
crc32()函數的作用是計算一個字符串的crc32多項式
[php]<?php
$checksum
= crc32("Hello World!");
printf("%u\n", $checksum); // 顯示
472456355
?>[/php]
quoted_printable_decode()函數不知道什么意思。
convert_uuencode()函數的作用是對一個字符串進行加密,convert_uudecode()函數的作用和convert_uuencode()函數相反,可以起到解密的作用。
[php]<?php
$some_string
= "test\ntext text\r\n";
echo convert_uuencode($some_string); // 顯示
0=&5S=`IT97AT('1E>'0-"@`` `
echo
convert_uudecode(convert_uuencode($some_string)); //顯示 test text
text
?>[/php]

強強 2012-11-07 00:29 發表評論
]]>
ThinkPhp標簽庫http://www.tkk7.com/lyjjq/articles/362377.html強強強強Mon, 31 Oct 2011 07:15:00 GMThttp://www.tkk7.com/lyjjq/articles/362377.htmlhttp://www.tkk7.com/lyjjq/comments/362377.htmlhttp://www.tkk7.com/lyjjq/articles/362377.html#Feedback0http://www.tkk7.com/lyjjq/comments/commentRss/362377.htmlhttp://www.tkk7.com/lyjjq/services/trackbacks/362377.html告:在使用下列所說的任何標簽庫都需要
HTML第一行加入 <tarlib name=”cx,html” />
如果想單獨引入cx標簽庫就直接寫成<tarlib name=”cx” />
如果單獨引入html標簽庫就直接寫成<tarlib name=”html” />
原則上來講所有的標簽的屬性是可以不增加的(因為tp并為進行強制驗證^_^),不過為了你的正常使用,請在使用的時候按照需要進行添加
首先我們來說html標簽庫的信息
Editor標簽
<html:editor id=”editory” name=”remarke” type=”FCKeditor” content=”” />
屬性
        Id 屬性
                編輯器的id值,
                如果并未填寫改屬性,則會默認為_editor
        Name 屬性 必須的
                編輯器的 name值
                如果未填寫,默認為空
        Width 屬性 
                編輯器的寬度
                如果未填寫,默認為100%
        Height 屬性
                編輯器的高度
                如果未填寫默認為320px
        Content 屬性
                編輯器的內容的初始化值
                如果未填寫,則為空
        Type 屬性
                編輯器的類型 默認情況下支持
Fckeditor  eWebEditor  NETEASE  UBB
如果填寫的編輯器類型不存在,則會默認為 TextArea標簽
指定Fckeditor 時,文件存放路徑必須為 /Public/Js/FCKeditor/
指定eWebEditor 時,文件存放路徑必須為/Public/Js/eWebEditor/
指定NETEASE 時,文件存放路徑必須為/Public/Js/HtmlEditor/
指定UBB時,文件存放路徑必須為/Public/Js/
imageBtn標簽
        <html:imageBtn id=" " name=" " type=" " value=" " click=" " style=" " />
        屬性:
                Id屬性
                        input的id值
                Name屬性
                        input的name值
                Type 屬性
                        input標記的類型
                        如果未填寫 則默認為 button
                Value 屬性
                        input標記的Value值
                click 屬性
                        input 的click執行內容,可以為js語句塊,也可以為js函數
                style 屬性
                        input標記外面生成div的樣式
imgLink標簽
<html:imgLink id=" " name=" " alt=" " click=" " style=" " type=" " value=" " />
提示:
        這個標記增加了鼠標移上和移除的濾鏡效果,推薦使用,不過內部實現是有問題的,如果需要使用的同志,請修改一下TagLibHtml.class.php 125行
$parseStr   = '<span class="'.$style.'" ><input title="'.$alt.'" type="'.$type.'" id="'.$id.'"  name="'.$name.'" onmouseover="this.style.filter=/'alpha(opacity=100)/'" onmouseout="this.style.filter=/'alpha(opacity=80)/'" onclick="'.$click.'" align="absmiddle" class="'.$name.' value="'.$value.'"></span>';
屬性:
        id屬性
                input的id值
        name屬性
                input的name值
        alt屬性
                input的title值
        style屬性
                input標記外面生成的span的樣式
        click屬性
                input的click執行內容,可以為js語句塊,也可以為js函數
        type屬性
                input屬性的類別,如果不輸入則默認為button
        value屬性
                input 的value的值,不過在源代碼里面并未使用
select標記
<html:select options=" " selected=" " id=" " name=" " values=" " output=" " multiple=" " size=" " first=" " style=" " dblclick=" " change=" " />
屬性:
        id屬性
                select的id值
        name屬性
                select的name值
        dblclick屬性
                select 雙擊事件調用的js
        change屬性
                select value值改變調用的js
        multiple屬性
                select 是否以可以選擇多項 值不固定,任意值均可
        style屬性
                select 的樣式
        size屬性
                select 的行數
        first屬性
                select 的第一個值,比如 請選擇您的學歷
        options屬性
                select的項,為php的有鍵的數組,如果沒有鍵的數組請使用values屬性
                當兩個屬性同時存在時,以options為優先
                value的值為$key
        values屬性
                select的項,為php無鍵的數組,當兩個屬性同時存在時,以options為優先
                value的值為數組的值
        selected屬性
                select 默認的選中項
                當使用options屬時,selected屬性的內容與$key進行匹配,如果使用values屬性
                則與內容進行匹配
        output屬性
                select option項目的結尾串,比如 
                <option value=”1”>小學學歷</option>
                <option value=”2”>中學學歷</option>
                <option value=”3”>大學學歷</option>
                這里的情況,我們就可以直接設置output為 學歷
checkbox標簽
        <html:checkbox checkboxes=" " checked=" " name=" " separator=" " />
提示:
checkboxes="" 請注意看這個屬性 并不是checkboxs 在s的前面多了一個e
我想應該是官方手誤吧,如果你愿意,請修改源碼,或者說在使用的時候加上e
屬性:
        name屬性
                checkbox屬性的name值,無論你輸入什么,系統會默認增加[]
        checkboxes
                checkbox組,是php的有鍵數組(必須為有鍵數組),$key為checkbox項的value
                $value 為checkbox后面帶的說明
        checked
                這里可以為數組,也可以為單個字符串
                如果為字符串,則與$key進行匹配 判斷是否選中
                如果為數組,則匹配是否包含這個$key 判斷是否選中
        separator
                分隔符,當一個checkbox項結束后的分隔符
radio標簽
        <html:radio radios=" " checked=" " checked=" " separator=" " />
屬性
        radios
                radio組是php的有鍵數組(必須為有鍵數組),$key為radio項的value
                $value 為radio后面帶的說明
        checked
                這里可以為數組,也可以為單個字符串
                如果為字符串,則與$key進行匹配 判斷是否選中
        name屬性
                radio屬性的name值,無論你輸入什么,系統會默認增加[]
        separator
                分隔符,當一個radio項結束后的分隔符
link標簽解析
* 格式: <html:link file="" type="" />
加載外部文件,type為文件類型(可選,建議填上),JS和CSS


強強 2011-10-31 15:15 發表評論
]]>
php 的編譯http://www.tkk7.com/lyjjq/articles/355656.html強強強強Wed, 03 Aug 2011 04:01:00 GMThttp://www.tkk7.com/lyjjq/articles/355656.htmlhttp://www.tkk7.com/lyjjq/comments/355656.htmlhttp://www.tkk7.com/lyjjq/articles/355656.html#Feedback0http://www.tkk7.com/lyjjq/comments/commentRss/355656.htmlhttp://www.tkk7.com/lyjjq/services/trackbacks/355656.html

強強 2011-08-03 12:01 發表評論
]]>
phpMyAdmin 配置文件http://www.tkk7.com/lyjjq/articles/352327.html強強強強Wed, 15 Jun 2011 01:09:00 GMThttp://www.tkk7.com/lyjjq/articles/352327.htmlhttp://www.tkk7.com/lyjjq/comments/352327.htmlhttp://www.tkk7.com/lyjjq/articles/352327.html#Feedback0http://www.tkk7.com/lyjjq/comments/commentRss/352327.htmlhttp://www.tkk7.com/lyjjq/services/trackbacks/352327.html路徑:/phpmyadmin/config.inc.php
$i++;
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['host'] = '192.168.10.21';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
/* Select mysqli if your server has it */
$cfg['Servers'][$i]['extension'] = 'mysql';
$cfg['Servers'][$i]['AllowNoPassword'] = true;

強強 2011-06-15 09:09 發表評論
]]>
memcache 和 php支持安裝http://www.tkk7.com/lyjjq/articles/348857.html強強強強Sat, 23 Apr 2011 02:11:00 GMThttp://www.tkk7.com/lyjjq/articles/348857.htmlhttp://www.tkk7.com/lyjjq/comments/348857.htmlhttp://www.tkk7.com/lyjjq/articles/348857.html#Feedback0http://www.tkk7.com/lyjjq/comments/commentRss/348857.htmlhttp://www.tkk7.com/lyjjq/services/trackbacks/348857.html

memcache是個很方便的東東,可以支持數據的頻繁讀寫,效率比數據庫要快,memcache的官方地址是http://memcached.org/

一、安裝libevent支持

cd /usr/local/src/我習慣將代碼文件放這里,整潔些
wget http://www.monkey.org/~provos/libevent-1.2.tar.gz
tar xzvf libevent-1.2.tar.gz
cd libevent-1.2
./configure –prefix=/usr
make&&make install

二、安裝memcached
wget http://memcached.googlecode.com/files/memcached-1.4.4.tar.gz
tar xzvf memcached-1.4.4.tar.gz
cd memcached-1.4.4
./configure –with-libevent=/usr
make
make install

三、安裝memcache的php支持
wget http://pecl.php.net/get/memcache-2.2.5.tgz
tar xzvf memcache-2.2.5.tgz
cd memcache-2.2.5
phpize
./configure
make
make install
#此時會提示你so文件安裝在/usr/local/lib/php/extensions/no-debug-non-zts-20090626/下
cp /usr/local/lib/php/extensions/no-debug-non-zts-20090626/memcache.so /usr/lib/php/modules/
注意,/usr/lib/php/modules/是值php.ini中默認的extension_dir所指,因機器而異
vi /etc/php.ini
打開php配置文件,將下面的文本加到末尾
extension=memcache.so
[Memcache]
memcache.allow_failover = On
memcache.max_failover_attempts = 20
memcache.chunk_size = 8192
memcache.default_port = 11211
;memcache.hash_strategy = “standard”
;memcache.hash_function = “crc32″
此時重啟apache看phpinfo就可看到memcache具體條目

四、啟動memcached服務
/usr/local/bin/memcached -d -m 10 -u nobody -l 127.0.0.1 -p 12000 -c 256 -P /tmp/memcached.pid
最好將這句話加到 /etc/rc.local 中
-d選項是啟動一個守護進程,
-m是分配給Memcache使用的內存數量,單位是MB,我這里是10MB,
-u是運行Memcache的用戶,為了安全,nobody即可
-l是監聽的服務器IP地址,如果有多個地址的話,我這里指定了服務器的回環地址,
-p是設置Memcache監聽的端口,我這里設置了12000,最好是1024以上的端口,
-c選項是最大運行的并發連接數,默認是1024,我這里設置了256,按照你服務器的負載量來設定,
-P是設置保存Memcache的pid文件,我這里是保存在 /tmp/memcached.pid,

五、測試文件
$mem = new Memcache;
$mem->connect(“127.0.0.1″, 12000);
$mem->set(‘key’, ‘Welcom to shallwe.net !’, 0, 60);
$val = $mem->get(‘key’);
echo $val;
?>



強強 2011-04-23 10:11 發表評論
]]>
ThinkPHP示例之:調試方法http://www.tkk7.com/lyjjq/articles/348849.html強強強強Sat, 23 Apr 2011 01:14:00 GMThttp://www.tkk7.com/lyjjq/articles/348849.htmlhttp://www.tkk7.com/lyjjq/comments/348849.htmlhttp://www.tkk7.com/lyjjq/articles/348849.html#Feedback0http://www.tkk7.com/lyjjq/comments/commentRss/348849.htmlhttp://www.tkk7.com/lyjjq/services/trackbacks/348849.htmlhalt($msg) //輸出錯誤信息,并中止執行 system_out($msg) //輸出調試信息到日志文件 dump($var, $echo=true, $label=null) //輸出變量信息 get_include_contents($filename) //獲取載入文件的內容
debug_start($label='') //記錄調試開始時間
debug_end($label='')  //輸出調試范圍運行時間(相同label屬于一個調試范圍)
更高級的調試方法是使用Debug類
Debug::mark($name); // 標記一個調試位置
Debug::useTime($start,$end); // 返回區間所用的時間
Debug::useMemory($start,$end); // 返回區間所用的內存


強強 2011-04-23 09:14 發表評論
]]>
THINKPHP擴展類:log類的使用http://www.tkk7.com/lyjjq/articles/348848.html強強強強Sat, 23 Apr 2011 01:13:00 GMThttp://www.tkk7.com/lyjjq/articles/348848.htmlhttp://www.tkk7.com/lyjjq/comments/348848.htmlhttp://www.tkk7.com/lyjjq/articles/348848.html#Feedback0http://www.tkk7.com/lyjjq/comments/commentRss/348848.htmlhttp://www.tkk7.com/lyjjq/services/trackbacks/348848.html
[ 概述 ]
ThinkPHP內置了日志處理類,無需導入就可以直接使用。Log類提供了包括記錄系統異常和錯誤和調試信息,以及SQL信息等功能,日志文件分別對應為WEB_LOG_ERROR 、WEB_LOG_DEBUG和SQL_LOG_DEBUG三種類型,對應的日志文件名稱為:
systemErr.log主要用于WEB_LOG_ERROR類型日志
用于記錄系統異常,通常為拋出異常或者捕獲嚴重錯誤后自動記錄
systemOut.log主要用于WEB_LOG_DEBUG日志類型
用于記錄調試信息和頁面的一些非嚴重錯誤記錄,調試信息一般為system_out方法寫入。
systemSql.log 主要是用于SQL_LOG_DEBUG日志類型
記錄執行過程中的SQL語句和執行時間,便于進行分析和優化。
日志文件的命名規則是前面增加日期前綴,原則上是一天的同類型的日志記錄在一個文件里面,您可以隨時查看日志文件,例如:
  • 07_09_21_systemOut.log  // 2007年9月21日的錯誤日志文件
  • 07_12_03_systemSql.log  // 2007年12月3日的SQL日志文件
  • 07_02_03_systemErr.log  // 2007年2月3日的異常日志文件

復制代碼
相關配置
  • 'WEB_LOG_RECORD'   => false,  // 默認不記錄日志
  • 'LOG_FILE_SIZE'    => 2097152, // 日志文件大小限制

復制代碼
設置WEB_LOG_RECORD為true就可以啟用日志記錄功能,可以設置LOG_FILE_SIZE參數來限制日志文件的大小,超過大小的日志會形成備份文件。備份文件的格式是在當前文件名前面加上備份的時間戳,例如:
1189571417-07_09_12_systemSql.log 備份的SQL日志文件
在系統的調試模式中,系統的所有異常和錯誤都會記錄到系統日志中,在正式部署應用后,您可以關閉調試模式,這樣系統就不會自動完成日志記錄,除非你自己觸發日志寫入。
系統對每個項目單獨記錄日志,所以查看的時候請注意定位到某個項目目錄下。
如果您的應用組件需要記錄特殊的日志,也可以調用(或者擴展)該方法來完成。

[ 方法 ]
Log類提供了三個靜態方法
Log::record($message,$type=WEB_LOG_ERROR)
記錄Log信息和類型 默認是錯誤日志類型
Log::save()
把record方法記錄的日志信息統一保存到文件
Log::write($message,$type=WEB_LOG_ERROR,$file='')
直接寫入日志信息
$message 是要記錄的日志信息
$type 就是日志類型
$file 日志文件位置和名稱,該參數可以改變系統默認的日志文件命名。


[ 示例 ]
Log類使用的簡單例子:
  • // 記錄日志信息 但是不保存到文件
  • Log::record('用戶數據錯誤');
  • Log::record('保存用戶信息發生異常',WEB_LOG_ERROR);
  • // 把上面的日志信息寫入文件保存
  • Log::save();
  • // 直接寫入日志文件
  • Log::write('這里記錄一下',WEB_LOG_DEBUG);


強強 2011-04-23 09:13 發表評論
]]>
php 取日期函數http://www.tkk7.com/lyjjq/articles/348837.html強強強強Fri, 22 Apr 2011 13:24:00 GMThttp://www.tkk7.com/lyjjq/articles/348837.htmlhttp://www.tkk7.com/lyjjq/comments/348837.htmlhttp://www.tkk7.com/lyjjq/articles/348837.html#Feedback0http://www.tkk7.com/lyjjq/comments/commentRss/348837.htmlhttp://www.tkk7.com/lyjjq/services/trackbacks/348837.html 顯示的格式: 年-月-日 小時:分鐘:妙
相關時間參數:
a - "am" 或是 "pm"
A - "AM" 或是 "PM"
d - 幾日,二位數字,若不足二位則前面補零; 如: "01" 至 "31"
D - 星期幾,三個英文字母; 如: "Fri"
F - 月份,英文全名; 如: "January"
h - 12 小時制的小時; 如: "01" 至 "12"
H - 24 小時制的小時; 如: "00" 至 "23"
g - 12 小時制的小時,不足二位不補零; 如: "1" 至 12"
G - 24 小時制的小時,不足二位不補零; 如: "0" 至 "23"
i - 分鐘; 如: "00" 至 "59"
j - 幾日,二位數字,若不足二位不補零; 如: "1" 至 "31"
l - 星期幾,英文全名; 如: "Friday"
m - 月份,二位數字,若不足二位則在前面補零; 如: "01" 至 "12"
n - 月份,二位數字,若不足二位則不補零; 如: "1" 至 "12"
M - 月份,三個英文字母; 如: "Jan"
s - 秒; 如: "00" 至 "59"
S - 字尾加英文序數,二個英文字母; 如: "th","nd"
t - 指定月份的天數; 如: "28" 至 "31"
U - 總秒數
w - 數字型的星期幾,如: "0" (星期日) 至 "6" (星期六)
Y - 年,四位數字; 如: "1999"
y - 年,二位數字; 如: "99"
z - 一年中的第幾天; 如: "0" 至 "365"

強強 2011-04-22 21:24 發表評論
]]>
Php字符串函數http://www.tkk7.com/lyjjq/articles/348766.html強強強強Fri, 22 Apr 2011 01:48:00 GMThttp://www.tkk7.com/lyjjq/articles/348766.htmlhttp://www.tkk7.com/lyjjq/comments/348766.htmlhttp://www.tkk7.com/lyjjq/articles/348766.html#Feedback0http://www.tkk7.com/lyjjq/comments/commentRss/348766.htmlhttp://www.tkk7.com/lyjjq/services/trackbacks/348766.html AddSlashes: 字符串加入斜線。 bin2hex: 二進位轉成十六進位。 Chop: 去除連續空白。 Chr: 返回序數值的字符。 chunk_split: 將字符串分成小段。 convert_cyr_string: 轉換古斯拉夫字符串成其它字符串。 crypt: 將字符串用 DES 編碼加密。 echo: 輸出字符串。 explode: 切開字符串。 flush: 清出輸出緩沖區。 get_meta_tags: 抽出文件所有 meta 標記的資料。 htmlspecialchars: 將特殊字符轉成 HTML 格式。 htmlentities: 將所有的字符都轉成 HTML 字符串。 implode: 將數組變成字符串。 join: 將數組變成字符串。 ltrim: 去除連續空白。 md5: 計算字符串的 MD5 哈稀。 nl2br: 將換行字符轉成 <br>。 Ord: 返回字符的序數值。 parse_str: 解析 query 字符串成變量。 print: 輸出字符串。 printf: 輸出格式化字符串。 quoted_printable_decode: 將 qp 編碼字符串轉成 8 位字符串。 QuoteMeta: 加入引用符號。 rawurldecode: 從 URL 專用格式字符串還原成普通字符串。 rawurlencode: 將字符串編碼成 URL 專用格式。 setlocale: 配置地域化信息。 similar_text: 計算字符串相似度。 soundex: 計算字符串的讀音值 sprintf: 將字符串格式化。 strchr: 尋找第一個出現的字符。 strcmp: 字符串比較。 strcspn: 不同字符串的長度。 strip_tags: 去掉 HTML 及 PHP 的標記。 StripSlashes: 去掉反斜線字符。 strlen: 取得字符串長度。 strrpos: 尋找字符串中某字符最后出現處。 strpos: 尋找字符串中某字符最先出現處。 strrchr: 取得某字符最后出現處起的字符串。 strrev: 顛倒字符串。 strspn: 找出某字符串落在另一字符串遮罩的數目。 strstr: 返回字符串中某字符串開始處至結束的字符串。 strtok: 切開字符串。 strtolower: 字符串全轉為小寫。 strtoupper: 字符串全轉為大寫。 str_replace: 字符串取代。 strtr: 轉換某些字符。 substr: 取部份字符串。 trim: 截去字符串首尾的空格。 ucfirst: 將字符串第一個字符改大寫。 ucwords: 將字符串每個字第一個字母改大寫。

強強 2011-04-22 09:48 發表評論
]]>
php生成excelhttp://www.tkk7.com/lyjjq/articles/345958.html強強強強Tue, 08 Mar 2011 09:57:00 GMThttp://www.tkk7.com/lyjjq/articles/345958.htmlhttp://www.tkk7.com/lyjjq/comments/345958.htmlhttp://www.tkk7.com/lyjjq/articles/345958.html#Feedback0http://www.tkk7.com/lyjjq/comments/commentRss/345958.htmlhttp://www.tkk7.com/lyjjq/services/trackbacks/345958.html<?php

include 'Lib/PhpExcel/PHPExcel.php';
include 'Lib/PhpExcel/PHPExcel/Writer/Excel5.php';

// uncomment  
////require_once 'PHPExcel/Writer/Excel5.php';    // 用于其他低版本xls  
// or  
////require_once 'PHPExcel/Writer/Excel2007.php'; // 用于 excel-2007 格式  

// 創建一個處理對象實例  
$objExcel = new PHPExcel();

// 創建文件格式寫入對象實例, uncomment  
$objWriter = new PHPExcel_Writer_Excel5($objExcel);    // 用于其他版本格式  
// or  
//$objWriter = new PHPExcel_Writer_Excel2007($objExcel); // 用于 2007 格式  
//$objWriter->setOffice2003Compatibility(true);  

//*************************************  
//設置文檔基本屬性  
$objProps = $objExcel->getProperties();
$objProps->setCreator("Zeal Li");
$objProps->setLastModifiedBy("Zeal Li");
$objProps->setTitle("Office XLS Test Document");
$objProps->setSubject("Office XLS Test Document, Demo");
$objProps->setDescription("Test document, generated by PHPExcel.");
$objProps->setKeywords("office excel PHPExcel");
$objProps->setCategory("Test");

//*************************************  
//設置當前的sheet索引,用于后續的內容操作。  
//一般只有在使用多個sheet的時候才需要顯示調用。  
//缺省情況下,PHPExcel會自動創建第一個sheet被設置SheetIndex=0  
$objExcel->setActiveSheetIndex(0);

$objActSheet = $objExcel->getActiveSheet();

//設置當前活動sheet的名稱  
$objActSheet->setTitle('測試Sheet');

//*************************************  
//設置單元格內容  
//  
//由PHPExcel根據傳入內容自動判斷單元格內容類型  
$objActSheet->setCellValue('A1', '字符串內容'); // 字符串內容  
$objActSheet->setCellValue('A2', 26); // 數值  
$objActSheet->setCellValue('A3', true); // 布爾值  
$objActSheet->setCellValue('A4', '=SUM(A2:A2)'); // 公式  

//顯式指定內容類型  
$objActSheet->setCellValueExplicit('A5', '847475847857487584', PHPExcel_Cell_DataType :: TYPE_STRING);

//合并單元格  
$objActSheet->mergeCells('B1:C22');

//分離單元格  
$objActSheet->unmergeCells('B1:C22');

//*************************************  
//設置單元格樣式  
//  

//設置寬度  
$objActSheet->getColumnDimension('B')->setAutoSize(true);
$objActSheet->getColumnDimension('A')->setWidth(30);

$objStyleA5 = $objActSheet->getStyle('A5');

//設置單元格內容的數字格式。  
//  
//如果使用了 PHPExcel_Writer_Excel5 來生成內容的話,  
//這里需要注意,在 PHPExcel_Style_NumberFormat 類的 const 變量定義的  
//各種自定義格式化方式中,其它類型都可以正常使用,但當setFormatCode  
//為 FORMAT_NUMBER 的時候,實際出來的效果被沒有把格式設置為"0"。需要  
//修改 PHPExcel_Writer_Excel5_Format 類源代碼中的 getXf($style) 方法,  
//在 if ($this->_BIFF_version == 0x0500) { (第363行附近)前面增加一  
//行代碼:   
//if($ifmt === '0') $ifmt = 1;  
//  
//設置格式為PHPExcel_Style_NumberFormat::FORMAT_NUMBER,避免某些大數字  
//被使用科學記數方式顯示,配合下面的 setAutoSize 方法可以讓每一行的內容  
//都按原始內容全部顯示出來。  
$objStyleA5->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat :: FORMAT_NUMBER);

//設置字體  
$objFontA5 = $objStyleA5->getFont();
$objFontA5->setName('Courier New');
$objFontA5->setSize(10);
$objFontA5->setBold(true);
$objFontA5->setUnderline(PHPExcel_Style_Font :: UNDERLINE_SINGLE);
$objFontA5->getColor()->setARGB('FF999999');

//設置對齊方式  
$objAlignA5 = $objStyleA5->getAlignment();
$objAlignA5->setHorizontal(PHPExcel_Style_Alignment :: HORIZONTAL_RIGHT);
$objAlignA5->setVertical(PHPExcel_Style_Alignment :: VERTICAL_CENTER);

//設置邊框  
$objBorderA5 = $objStyleA5->getBorders();
$objBorderA5->getTop()->setBorderStyle(PHPExcel_Style_Border :: BORDER_THIN);
$objBorderA5->getTop()->getColor()->setARGB('FFFF0000'); // color  
$objBorderA5->getBottom()->setBorderStyle(PHPExcel_Style_Border :: BORDER_THIN);
$objBorderA5->getLeft()->setBorderStyle(PHPExcel_Style_Border :: BORDER_THIN);
$objBorderA5->getRight()->setBorderStyle(PHPExcel_Style_Border :: BORDER_THIN);

//設置填充顏色  
$objFillA5 = $objStyleA5->getFill();
$objFillA5->setFillType(PHPExcel_Style_Fill :: FILL_SOLID);
$objFillA5->getStartColor()->setARGB('FFEEEEEE');

//從指定的單元格復制樣式信息.  
$objActSheet->duplicateStyle($objStyleA5, 'B1:C22');


//添加一個新的worksheet  
$objExcel->createSheet();
$objExcel->getSheet(1)->setTitle('測試2');

//保護單元格  
$objExcel->getSheet(1)->getProtection()->setSheet(true);
$objExcel->getSheet(1)->protectCells('A1:C22', 'PHPExcel');

//*************************************  
//輸出內容  
//  
$outputFileName = "output.xls";
//到文件  
//$objWriter->save($outputFileName);  
//or  
//到瀏覽器  
header('Content-type:aplication/vnd.ms-excel');
header("Content-Disposition: attachment; filename=out.xls");
$objWriter->save('php://output');
?>  



強強 2011-03-08 17:57 發表評論
]]>
Linux Php連接SQLServer數據庫(freetds)http://www.tkk7.com/lyjjq/articles/345374.html強強強強Mon, 28 Feb 2011 14:03:00 GMThttp://www.tkk7.com/lyjjq/articles/345374.htmlhttp://www.tkk7.com/lyjjq/comments/345374.htmlhttp://www.tkk7.com/lyjjq/articles/345374.html#Feedback0http://www.tkk7.com/lyjjq/comments/commentRss/345374.htmlhttp://www.tkk7.com/lyjjq/services/trackbacks/345374.htmlPHP訪問我們以前的Sql Server 2005數據,所以就有了這篇文章的誕生.廢話就少說了,做程序設計的最不喜歡兜圈子了.用簡介步驟說明問題,往下看.

  系統: Linux

  數據庫: Sql Server 2005

  1.下載FreeTDS

  官方網站:http://www.freetds.org

  2.安裝FreeTDS

  # tar zxvf freetds-current.tgz(解壓)

  # ./configure --prefix=/usr/local/freetds --with-tdsver=7.2 --enable-msdblib

  # make

  # make install

  其他可選 根據自己情況

  --enable-dbmfix --with-gnu-ld --enable-shared --enable-static

  安裝freetds到目錄/usr/local/freetds:--prefix=/usr/local/freetds 如果不帶這個默認好像也是這目錄

  對應數據庫版本--我的是Microsoft SQL Server 2005 所以我帶的是 --with-tdsver=7.2

  4.2 Sybase SQL Server < 10 and Microsoft SQL Server 6.5

  5.0 Sybase SQL Server >= 10

  7.0 Microsoft SQL Server 7.0

  7.1 Microsoft SQL Server 2000

  7.2 Microsoft SQL Server 2005

  3.編輯/usr/local/freetds/etc/freetds.conf

  # $Id: freetds.conf,v 1.12 2007/12/25 06:02:36 jklowden Exp $

  #

  # This file is installed by FreeTDS if no file by the same

  # name is found in the installation directory.

  #

  # For information about the layout of this file and its settings,

  # see the freetds.conf manpage "man freetds.conf".

  # Global settings are overridden by those in a database

  # server specific section

  [global]

  # TDS protocol version

  ; tds version = 4.2

  # Whether to write a TDSDUMP file for diagnostic purposes

  # (setting this to /tmp is insecure on a multi-user system)

  ; dump file = /tmp/freetds.log

  ; debug flags = 0xffff

  # Command and connection timeouts

  ; timeout = 10

  ; connect timeout = 10

  # If you get out-of-memory errors, it may mean that your client

  # is trying to allocate a huge buffer for a TEXT field.

  # Try setting "text size" to a more reasonable limit

  text size = 64512

  #解決中文亂碼問題

  client charset=utf8

  # A typical Sybase server

  #[egServer50]

  # host = symachine.domain.com

  # port = 5000

  # tds version = 5.0

  # A typical Microsoft server

  #[egServer70]

  # host = ntmachine.domain.com

  # port = 1433

  # tds version = 7.0

  #這個名字程序和命令行用得上,叫什么自己定

  [Server2005]

  host = 192.168.3.100 #我的SQL Server2005 IP,根據自己改

  port = 1433

  tds version = 7.2

  4.測試連接:

  [root@test bin]# ./tsql -S Server2005 -p 1433 -U java -P java -D PublicDB

  locale is "zh_CN"

  locale charset is "GB2312"

  Default database being set to PublicDB

  1>

  出現這個表示連接成功! 退出:quit 和 exit 都行.

  參數說明

  -S 配置的服務名

  -H 主機名

  -p 端口

  -U username

  -P password

  -D database

  5.測試查詢:

  # ./tsql -S Server2005 -p 1433 -U java -P java -D PublicDB

  1> select USER_ID,TRUE_NAME from USER_INFO

  2> go

  可以顯示中文沒問題!

  6.讓PHP支持mssql(freeTDS)

  重新編譯PHP 這些參數根據自己情況來定,下面是我們需要的

  但是必須帶--with-mssql=/usr/local/freetds

  ./configure --prefix=/usr/local/PHP --with-MySQL=/usr/local/MySQL --with-apxs2=/usr/local/apache/bin/apxs --with-gd=/usr/local/gd --with-jpeg-dir=/usr/local/libjpeg --with-png-dir=/usr/local/libpng --with-zlib-dir=/usr/local/zlib --with-libxml-dir=/usr/local/libxml2 --with-iconv=/usr/local/libiconv --with-freetype-dir=/usr/local/freetype --with-pdo-MySQL=/usr/local/PHPbak/lib/PHP/extensions/no-debug-non-zts-20060613/pdo_MySQL.so --enable-sockets --with-curl --with-pear --with-mssql=/usr/local/freetds

  如果編譯報錯請執行:

  # touch /usr/local/freetds/include/tds.h

  # touch /usr/local/freetds/lib/libtds.a

  7.PHP測試程序

  

  /**

  * MOIT

  *

  * @author 明白(admin126com@126.com) 日 期: Wed Nov 18 05:00:07 GMT 2009

  * @copyright Copyright (c) 2009

  * @desc 測試

  */

  $msconnect=mssql_connect("Server2005","java","java");

  $msdb=mssql_select_db("PublicDB",$msconnect);

  $msquery = "select TRUE_NAME,USER_ID,USER_NAME,PASSWORD from USER_INFO";

  $msresults= mssql_query($msquery);

  while ($row = mssql_fetch_array($msresults)) {

  echo $row["USER_ID"] . " ".$row["TRUE_NAME"]. " " . $row["USER_NAME"] . " " . $row["PASSWORD"] . "
";

  }

  ?>

  8.安裝完畢,祝您成功!



強強 2011-02-28 22:03 發表評論
]]>
讓PHP程序永遠在后臺運行http://www.tkk7.com/lyjjq/articles/342625.html強強強強Sun, 09 Jan 2011 09:12:00 GMThttp://www.tkk7.com/lyjjq/articles/342625.htmlhttp://www.tkk7.com/lyjjq/comments/342625.htmlhttp://www.tkk7.com/lyjjq/articles/342625.html#Feedback0http://www.tkk7.com/lyjjq/comments/commentRss/342625.htmlhttp://www.tkk7.com/lyjjq/services/trackbacks/342625.htmlPHP里有個函數很有用。這是在最近的開發中才逐漸用到的。
int ignore_user_abort ( [bool setting] )

這個函數的作用是指示服務器端在遠程客戶端關閉連接后是否繼續執行下面的腳本。

setting 參數是一個可選參數。如設置為True,則表示如果用戶停止腳本運行,仍然不影響腳本的運行(即:腳本將持續執行);如果設置為False,則表示當用戶停止運行腳本程序時,腳本程序將停止運行。

下面這個例子,在用戶關閉瀏覽器后,該腳本仍然后在服務器上繼續執行:

<?php
ignore_user_abort(); // 后臺運行
set_time_limit(0); // 取消腳本運行時間的超時上限
do{
sleep(60); // 休眠1分鐘
}while(true);

?>
除非在服務器上關閉這個程序,否則這斷代碼將永遠執行下去。

-------------------------------------------------------------------------

<?php
   ignore_user_abort(); // 后臺運行
   set_time_limit(0); // 取消腳本運行時間的超時上限
   echo 'start.<br/>';
   while(!file_exists('close.txt')){
    $fp = fopen('test.txt','a+');
    fwrite($fp,date("Y-m-d H:i:s") . " 成功了!\r\n");
    fclose($fp);
    sleep(10);
   }
   echo 'end.<br/>';
?>



強強 2011-01-09 17:12 發表評論
]]>
php中的 三個判斷變量的函數 empty is_null, issethttp://www.tkk7.com/lyjjq/articles/342624.html強強強強Sun, 09 Jan 2011 09:05:00 GMThttp://www.tkk7.com/lyjjq/articles/342624.htmlhttp://www.tkk7.com/lyjjq/comments/342624.htmlhttp://www.tkk7.com/lyjjq/articles/342624.html#Feedback0http://www.tkk7.com/lyjjq/comments/commentRss/342624.htmlhttp://www.tkk7.com/lyjjq/services/trackbacks/342624.htmlisset 判斷變量是否已存在
empty 判斷變量是否為空或為0
is_null 判斷變量是否為NULL

變量 empty is_null isset
$a=”” true false true
$a=null true true false
var $a true true false
$a=array() true false true
$a=false true false true
$a=15 false false true
$a=1 false false true
$a=0 true false true
$a=”0” true false true
$a=”true” false false true
$a=”false” false false true


強強 2011-01-09 17:05 發表評論
]]>
主站蜘蛛池模板: 免费视频中文字幕| 久久亚洲精品成人综合| 国产亚洲av人片在线观看| 久久精品九九亚洲精品| 一个人免费播放在线视频看片| 国产va免费精品观看精品| 亚洲精品国产美女久久久| 一级毛片试看60分钟免费播放| 午夜影视日本亚洲欧洲精品一区| 皇色在线视频免费网站| 亚洲天堂电影在线观看| 久久国产精品免费网站| 中文字幕亚洲一区二区三区| 瑟瑟网站免费网站入口 | 国产福利在线观看免费第一福利| 国产亚洲漂亮白嫩美女在线| 国产裸模视频免费区无码| 亚洲人成综合网站7777香蕉| 麻豆一区二区免费播放网站| 中国一级特黄的片子免费| 亚洲一区二区三区在线视频| 国产精品无码免费专区午夜| 国产亚洲综合一区柠檬导航| 麻豆成人精品国产免费| 99re6热视频精品免费观看| 亚洲精品国产情侣av在线| 国产免费久久精品99re丫y| a级毛片无码免费真人久久| 亚洲AV无码AV男人的天堂| 免费国产不卡午夜福在线| 精品一区二区三区免费视频 | 日韩精品亚洲aⅴ在线影院| 思思99re66在线精品免费观看| 亚洲熟妇无码八V在线播放| 国产成人无码免费视频97| 青青视频观看免费99| 久久久久久成人毛片免费看| 久久亚洲精品国产亚洲老地址| 久久国产亚洲观看| 国产精品亚洲精品日韩已满| 亚洲免费一区二区|