在編寫代碼的時候有個神奇的工具老是好的!下面這裏收集了 40+ PHP 代碼片斷,能夠幫助你開發 PHP 項目。php
這些 PHP 片斷對於 PHP 初學者也很是有幫助,很是容易學習,讓咱們開始學習吧~html
在開發 Web 或者移動應用的時候,常常會遇到須要發送 SMS 給用戶,或者由於登陸緣由,或者是爲了發送信息。下面的 PHP 代碼就實現了發送 SMS 的功能。node
爲了使用任何的語言發送 SMS,須要一個 SMS gateway。大部分的 SMS 會提供一個 API,這裏是使用 MSG91做爲 SMS gateway。mysql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
function
send_sms(
$mobile
,
$msg
)
{
$authKey
=
"XXXXXXXXXXX"
;
date_default_timezone_set(
"Asia/Kolkata"
);
$date
=
strftime
(
"%Y-%m-%d %H:%M:%S"
);
//Multiple mobiles numbers separated by comma
$mobileNumber
=
$mobile
;
//Sender ID,While using route4 sender id should be 6 characters long.
$senderId
=
"IKOONK"
;
//Your message to send, Add URL encoding here.
$message
= urlencode(
$msg
);
//Define route
$route
=
"template"
;
//Prepare you post parameters
$postData
=
array
(
'authkey'
=>
$authKey
,
'mobiles'
=>
$mobileNumber
,
'message'
=>
$message
,
'sender'
=>
$senderId
,
'route'
=>
$route
);
//API URL
$url
=
"https://control.msg91.com/sendhttp.php"
;
// init the resource
$ch
= curl_init();
curl_setopt_array(
$ch
,
array
(
CURLOPT_URL =>
$url
,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS =>
$postData
//,CURLOPT_FOLLOWLOCATION => true
));
//Ignore SSL certificate verification
curl_setopt(
$ch
, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt(
$ch
, CURLOPT_SSL_VERIFYPEER, 0);
//get response
$output
= curl_exec(
$ch
);
//Print error if any
if
(curl_errno(
$ch
))
{
echo
'error:'
. curl_error(
$ch
);
}
curl_close(
$ch
);
}
|
其中「$authKey = "XXXXXXXXXXX";」須要你輸入你的密碼,「$senderId = "IKOONK";」須要你輸入你的 SenderID。當輸入移動號碼的時候須要指定國家代碼 (好比,美國是 1,印度是 91 )。git
語法:sql
1
2
3
4
5
|
<?php
$message
=
"Hello World"
;
$mobile
=
"918112998787"
;
send_sms(
$mobile
,
$message
);
?>
|
Mandrill 是一款強大的 SMTP 提供器。開發者傾向於使用一個第三方 SMTP provider 來獲取更好的收件交付。數據庫
下面的函數中,你須要把 「Mandrill.php」 放在同一個文件夾,做爲 PHP 文件,這樣就能夠使用TA來發送郵件。apache
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
function
send_email(
$to_email
,
$subject
,
$message1
)
{
require_once
'Mandrill.php'
;
$apikey
=
'XXXXXXXXXX'
;
//specify your api key here
$mandrill
=
new
Mandrill(
$apikey
);
$message
=
new
stdClass();
$message
->html =
$message1
;
$message
->text =
$message1
;
$message
->subject =
$subject
;
$message
->from_email =
"blog@koonk.com"
;
//Sender Email
$message
->from_name =
"KOONK"
;
//Sender Name
$message
->to =
array
(
array
(
"email"
=>
$to_email
));
$message
->track_opens = true;
$response
=
$mandrill
->messages->send(
$message
);
}
|
「$apikey = 'XXXXXXXXXX'; //specify your api key here」這裏須要你指定你的 API 密鑰(從 Mandrill 帳戶中得到)。json
語法:windows
1
2
3
4
5
6
|
<?php
$to
=
"abc@example.com"
;
$subject
=
"This is a test email"
;
$message
=
"Hello World!"
;
send_email(
$to
,
$subject
,
$message
);
?>
|
爲了達到最好的效果,最好按照 Mandrill 的教程去配置 DNS。
SQL 注入或者 SQLi 常見的攻擊網站的手段,使用下面的代碼能夠幫助你防止這些工具。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
function
clean(
$input
)
{
if
(
is_array
(
$input
))
{
foreach
(
$input
as
$key
=>
$val
)
{
$output
[
$key
] = clean(
$val
);
// $output[$key] = $this->clean($val);
}
}
else
{
$output
= (string)
$input
;
// if magic quotes is on then use strip slashes
if
(get_magic_quotes_gpc())
{
$output
=
stripslashes
(
$output
);
}
// $output = strip_tags($output);
$output
= htmlentities(
$output
, ENT_QUOTES,
'UTF-8'
);
}
// return the clean text
return
$output
;
}
|
語法:
1
2
3
4
5
|
<?php
$text
=
"<script>alert(1)</script>"
;
$text
= clean(
$text
);
echo
$text
;
?>
|
使用下面的函數,能夠檢測用戶是在哪一個城市訪問你的網站
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
function
detect_city(
$ip
) {
$default
=
'UNKNOWN'
;
$curlopt_useragent
=
'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)'
;
$url
=
'http://ipinfodb.com/ip_locator.php?ip='
. urlencode(
$ip
);
$ch
= curl_init();
$curl_opt
=
array
(
CURLOPT_FOLLOWLOCATION => 1,
CURLOPT_HEADER => 0,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_USERAGENT =>
$curlopt_useragent
,
CURLOPT_URL =>
$url
,
CURLOPT_TIMEOUT => 1,
CURLOPT_REFERER =>
'http://'
.
$_SERVER
[
'HTTP_HOST'
],
);
curl_setopt_array(
$ch
,
$curl_opt
);
$content
= curl_exec(
$ch
);
if
(!
is_null
(
$curl_info
)) {
$curl_info
= curl_getinfo(
$ch
);
}
curl_close(
$ch
);
if
( preg_match(
'{<li>City : ([^<]*)</li>}i'
,
$content
,
$regs
) ) {
$city
=
$regs
[1];
}
if
( preg_match(
'{<li>State/Province : ([^<]*)</li>}i'
,
$content
,
$regs
) ) {
$state
=
$regs
[1];
}
if
(
$city
!=
''
&&
$state
!=
''
){
$location
=
$city
.
', '
.
$state
;
return
$location
;
}
else
{
return
$default
;
}
}
|
語法:
1
2
3
4
5
|
<?php
$ip
=
$_SERVER
[
'REMOTE_ADDR'
];
$city
= detect_city(
$ip
);
echo
$city
;
?>
|
使用下面的函數,能夠獲取任意 Web 頁面的 HTML 代碼
1
2
3
4
5
6
7
8
9
|
function
display_sourcecode(
$url
)
{
$lines
= file(
$url
);
$output
=
""
;
foreach
(
$lines
as
$line_num
=>
$line
) {
// loop thru each line and prepend line numbers
$output
.=
"Line #<b>{$line_num}</b> : "
. htmlspecialchars(
$line
) .
"<br>\n"
;
}
}
|
語法:
1
2
3
4
5
|
<?php
$url
=
"http://blog.koonk.com"
;
$source
= display_sourcecode(
$url
);
echo
$source
;
?>
|
1
2
3
4
5
6
|
function
fb_fan_count(
$facebook_name
)
{
$data
= json_decode(
file_get_contents
(
"https://graph.facebook.com/"
.
$facebook_name
));
$likes
=
$data
->likes;
return
$likes
;
}
|
語法:
1
2
3
4
5
|
<?php
$page
=
"koonktechnologies"
;
$count
= fb_fan_count(
$page
);
echo
$count
;
?>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
function
dominant_color(
$image
)
{
$i
= imagecreatefromjpeg(
$image
);
for
(
$x
=0;
$x
<imagesx(
$i
);
$x
++) {
for
(
$y
=0;
$y
<imagesy(
$i
);
$y
++) {
$rgb
= imagecolorat(
$i
,
$x
,
$y
);
$r
= (
$rgb
>> 16) & 0xFF;
$g
= (
$rgb
>> & 0xFF;
$b
=
$rgb
& 0xFF;
$rTotal
+=
$r
;
$gTotal
+=
$g
;
$bTotal
+=
$b
;
$total
++;
}
}
$rAverage
=
round
(
$rTotal
/
$total
);
$gAverage
=
round
(
$gTotal
/
$total
);
$bAverage
=
round
(
$bTotal
/
$total
);
}
|
使用下面的函數能夠獲取任何域名用戶的完整細節
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
function
whois_query(
$domain
) {
// fix the domain name:
$domain
=
strtolower
(trim(
$domain
));
$domain
= preg_replace(
'/^http:\/\//i'
,
''
,
$domain
);
$domain
= preg_replace(
'/^www\./i'
,
''
,
$domain
);
$domain
=
explode
(
'/'
,
$domain
);
$domain
= trim(
$domain
[0]);
// split the TLD from domain name
$_domain
=
explode
(
'.'
,
$domain
);
$lst
=
count
(
$_domain
)-1;
$ext
=
$_domain
[
$lst
];
// You find resources and lists
// like these on wikipedia:
//
// http://de.wikipedia.org/wiki/Whois
//
$servers
=
array
(
"biz"
=>
"whois.neulevel.biz"
,
"com"
=>
"whois.internic.net"
,
"us"
=>
"whois.nic.us"
,
"coop"
=>
"whois.nic.coop"
,
"info"
=>
"whois.nic.info"
,
"name"
=>
"whois.nic.name"
,
"net"
=>
"whois.internic.net"
,
"gov"
=>
"whois.nic.gov"
,
"edu"
=>
"whois.internic.net"
,
"mil"
=>
"rs.internic.net"
,
"int"
=>
"whois.iana.org"
,
"ac"
=>
"whois.nic.ac"
,
"ae"
=>
"whois.uaenic.ae"
,
"at"
=>
"whois.ripe.net"
,
"au"
=>
"whois.aunic.net"
,
"be"
=>
"whois.dns.be"
,
"bg"
=>
"whois.ripe.net"
,
"br"
=>
"whois.registro.br"
,
"bz"
=>
"whois.belizenic.bz"
,
"ca"
=>
"whois.cira.ca"
,
"cc"
=>
"whois.nic.cc"
,
"ch"
=>
"whois.nic.ch"
,
"cl"
=>
"whois.nic.cl"
,
"cn"
=>
"whois.cnnic.net.cn"
,
"cz"
=>
"whois.nic.cz"
,
"de"
=>
"whois.nic.de"
,
"fr"
=>
"whois.nic.fr"
,
"hu"
=>
"whois.nic.hu"
,
"ie"
=>
"whois.domainregistry.ie"
,
"il"
=>
"whois.isoc.org.il"
,
"in"
=>
"whois.ncst.ernet.in"
,
"ir"
=>
"whois.nic.ir"
,
"mc"
=>
"whois.ripe.net"
,
"to"
=>
"whois.tonic.to"
,
"tv"
=>
"whois.tv"
,
"ru"
=>
"whois.ripn.net"
,
"org"
=>
"whois.pir.org"
,
"aero"
=>
"whois.information.aero"
,
"nl"
=>
"whois.domain-registry.nl"
);
if
(!isset(
$servers
[
$ext
])){
die
(
'Error: No matching nic server found!'
);
}
$nic_server
=
$servers
[
$ext
];
$output
=
''
;
// connect to whois server:
if
(
$conn
=
fsockopen
(
$nic_server
, 43)) {
fputs
(
$conn
,
$domain
.
"\r\n"
);
while
(!
feof
(
$conn
)) {
$output
.=
fgets
(
$conn
,128);
}
fclose(
$conn
);
}
else
{
die
(
'Error: Could not connect to '
.
$nic_server
.
'!'
); }
return
$output
;
}
|
語法:
1
2
3
4
5
|
<?php
$domain
=
"http://www.blog.koonk.com"
;
$result
= whois_query(
$domain
);
print_r(
$result
);
?>
|
有時候,當在網站填寫表單,用戶可能會輸入錯誤的郵箱地址,這個函數能夠驗證郵箱地址是否有效。
1
2
3
4
5
6
7
8
9
|
function
is_validemail(
$email
)
{
$check
= 0;
if
(filter_var(
$email
,FILTER_VALIDATE_EMAIL))
{
$check
= 1;
}
return
$check
;
}
|
語法:
1
2
3
4
5
6
|
<?php
$email
=
"blog@koonk.com"
;
$check
= is_validemail(
$email
);
echo
$check
;
// If the output is 1, then email is valid.
?>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
function
getRealIpAddr()
{
if
(!emptyempty(
$_SERVER
[
'HTTP_CLIENT_IP'
]))
{
$ip
=
$_SERVER
[
'HTTP_CLIENT_IP'
];
}
elseif
(!emptyempty(
$_SERVER
[
'HTTP_X_FORWARDED_FOR'
]))
//to check ip is pass from proxy
{
$ip
=
$_SERVER
[
'HTTP_X_FORWARDED_FOR'
];
}
else
{
$ip
=
$_SERVER
[
'REMOTE_ADDR'
];
}
return
$ip
;
}
|
語法:
1
2
3
4
|
<?php
$ip
= getRealIpAddr();
echo
$ip
;
?>
|
若是你正在開發論壇,博客或者是一個常規的表單提交,不少時候都要用戶訪問一個網站。使用這個函數,URL 字符串就能夠自動的轉換爲超連接。
1
2
3
4
5
6
7
8
9
10
11
|
function
makeClickableLinks(
$text
)
{
$text
=
eregi_replace
(
'(((f|ht){1}tp://)[-a-zA-Z0-9@:%_+.~#?&//=]+)'
,
'<a href="\1">\1</a>'
,
$text
);
$text
=
eregi_replace
(
'([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)'
,
'\1<a href="http://\2">\2</a>'
,
$text
);
$text
=
eregi_replace
(
'([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})'
,
'<a href="mailto:\1">\1</a>'
,
$text
);
return
$text
;
}
|
語法:
1
2
3
4
5
|
<?php
$text
=
"This is my first post on http://blog.koonk.com"
;
$text
= makeClickableLinks(
$text
);
echo
$text
;
?>
|
這個代碼片斷能夠方便你禁止某些特定的 IP 地址訪問你的網站
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
if
( !
file_exists
(
'blocked_ips.txt'
) ) {
$deny_ips
=
array
(
'127.0.0.1'
,
'192.168.1.1'
,
'83.76.27.9'
,
'192.168.1.163'
);
}
else
{
$deny_ips
= file(
'blocked_ips.txt'
);
}
// read user ip adress:
$ip
= isset(
$_SERVER
[
'REMOTE_ADDR'
]) ? trim(
$_SERVER
[
'REMOTE_ADDR'
]) :
''
;
// search current IP in $deny_ips array
if
( (
array_search
(
$ip
,
$deny_ips
))!== FALSE ) {
// address is blocked:
echo
'Your IP adress ('
.
$ip
.
') was blocked!'
;
exit
;
}
|
若是你須要下載特定的文件而不用另開新窗口,下面的代碼片斷能夠幫助你。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
function
force_download(
$file
)
{
$dir
=
"../log/exports/"
;
if
((isset(
$file
))&&(
file_exists
(
$dir
.
$file
))) {
header(
"Content-type: application/force-download"
);
header(
'Content-Disposition: inline; filename="'
.
$dir
.
$file
.
'"'
);
header(
"Content-Transfer-Encoding: Binary"
);
header(
"Content-length: "
.
filesize
(
$dir
.
$file
));
header(
'Content-Type: application/octet-stream'
);
header(
'Content-Disposition: attachment; filename="'
.
$file
.
'"'
);
readfile(
"$dir$file"
);
}
else
{
echo
"No file selected"
;
}
}
|
語法:
1
2
3
|
<php
force_download(
"image.jpg"
);
?>
|
使用下面的 PHP 片斷能夠建立 JSON 數據,能夠方便你建立移動應用的 Web 服務
1
2
|
$json_data
=
array
(
'id'
=>1,
'name'
=>
"Mohit"
);
echo
json_encode(
$json_data
);
|
使用下面的 PHP 片斷能夠即時壓縮 zip 文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
function
create_zip(
$files
=
array
(),
$destination
=
''
,
$overwrite
= false) {
//if the zip file already exists and overwrite is false, return false
if
(
file_exists
(
$destination
) && !
$overwrite
) {
return
false; }
//vars
$valid_files
=
array
();
//if files were passed in...
if
(
is_array
(
$files
)) {
//cycle through each file
foreach
(
$files
as
$file
) {
//make sure the file exists
if
(
file_exists
(
$file
)) {
$valid_files
[] =
$file
;
}
}
}
//if we have good files...
if
(
count
(
$valid_files
)) {
//create the archive
$zip
=
new
ZipArchive();
if
(
$zip
->open(
$destination
,
$overwrite
? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
return
false;
}
//add the files
foreach
(
$valid_files
as
$file
) {
$zip
->addFile(
$file
,
$file
);
}
//debug
//echo 'The zip archive contains ',$zip->numFiles,' files with a status of ',$zip->status;
//close the zip -- done!
$zip
->close();
//check to make sure the file exists
return
file_exists
(
$destination
);
}
else
{
return
false;
}
}
|
語法:
1
2
3
4
|
<?php
$files
=
array
(
'file1.jpg'
,
'file2.jpg'
,
'file3.gif'
);
create_zip(
$files
,
'myzipfile.zip'
, true);
?>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
function
unzip(
$location
,
$newLocation
)
{
if
(
exec
(
"unzip $location"
,
$arr
)){
mkdir
(
$newLocation
);
for
(
$i
= 1;
$i
<
count
(
$arr
);
$i
++){
$file
= trim(preg_replace(
"~inflating: ~"
,
""
,
$arr
[
$i
]));
copy
(
$location
.
'/'
.
$file
,
$newLocation
.
'/'
.
$file
);
unlink(
$location
.
'/'
.
$file
);
}
return
TRUE;
}
else
{
return
FALSE;
}
}
|
語法:
1
2
3
|
<?php
unzip(
'test.zip'
,
'unziped/test'
);
//File would be unzipped in unziped/test folder
?>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
function
resize_image(
$filename
,
$tmpname
,
$xmax
,
$ymax
)
{
$ext
=
explode
(
"."
,
$filename
);
$ext
=
$ext
[
count
(
$ext
)-1];
if
(
$ext
==
"jpg"
||
$ext
==
"jpeg"
)
$im
= imagecreatefromjpeg(
$tmpname
);
elseif
(
$ext
==
"png"
)
$im
= imagecreatefrompng(
$tmpname
);
elseif
(
$ext
==
"gif"
)
$im
= imagecreatefromgif(
$tmpname
);
$x
= imagesx(
$im
);
$y
= imagesy(
$im
);
if
(
$x
<=
$xmax
&&
$y
<=
$ymax
)
return
$im
;
if
(
$x
>=
$y
) {
$newx
=
$xmax
;
$newy
=
$newx
*
$y
/
$x
;
}
else
{
$newy
=
$ymax
;
$newx
=
$x
/
$y
*
$newy
;
}
$im2
= imagecreatetruecolor(
$newx
,
$newy
);
imagecopyresized(
$im2
,
$im
, 0, 0, 0, 0,
floor
(
$newx
),
floor
(
$newy
),
$x
,
$y
);
return
$im2
;
}
|
以前咱們提供瞭如何使用 Mandrill 發送郵件的 PHP 代碼片斷,可是若是你不想使用第三方服務,那麼能夠使用下面的 PHP 代碼片斷。
1
2
3
4
5
6
7
8
9
10
|
function
send_mail(
$to
,
$subject
,
$body
)
{
$headers
=
"From: KOONK\r\n"
;
$headers
.=
"Reply-To: blog@koonk.com\r\n"
;
$headers
.=
"Return-Path: blog@koonk.com\r\n"
;
$headers
.=
"X-Mailer: PHP5\n"
;
$headers
.=
'MIME-Version: 1.0'
.
"\n"
;
$headers
.=
'Content-type: text/html; charset=iso-8859-1'
.
"\r\n"
;
mail(
$to
,
$subject
,
$body
,
$headers
);
}
|
語法:
1
2
3
4
5
6
|
<?php
$to
=
"admin@koonk.com"
;
$subject
=
"This is a test mail"
;
$body
=
"Hello World!"
;
send_mail(
$to
,
$subject
,
$body
);
?>
|
1
2
3
4
5
6
7
|
function
secsToStr(
$secs
) {
if
(
$secs
>=86400){
$days
=
floor
(
$secs
/86400);
$secs
=
$secs
%86400;
$r
=
$days
.
' day'
;
if
(
$days
<>1){
$r
.=
's'
;}
if
(
$secs
>0){
$r
.=
', '
;}}
if
(
$secs
>=3600){
$hours
=
floor
(
$secs
/3600);
$secs
=
$secs
%3600;
$r
.=
$hours
.
' hour'
;
if
(
$hours
<>1){
$r
.=
's'
;}
if
(
$secs
>0){
$r
.=
', '
;}}
if
(
$secs
>=60){
$minutes
=
floor
(
$secs
/60);
$secs
=
$secs
%60;
$r
.=
$minutes
.
' minute'
;
if
(
$minutes
<>1){
$r
.=
's'
;}
if
(
$secs
>0){
$r
.=
', '
;}}
$r
.=
$secs
.
' second'
;
if
(
$secs
<>1){
$r
.=
's'
;}
return
$r
;
}
|
語法:
1
2
3
4
5
|
<?php
$seconds
=
"56789"
;
$output
= secsToStr(
$seconds
);
echo
$output
;
?>
|
鏈接 MySQL 數據庫
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<?php
$DBNAME
=
'koonk'
;
$HOST
=
'localhost'
;
$DBUSER
=
'root'
;
$DBPASS
=
'koonk'
;
$CONNECT
= mysql_connect(
$HOST
,
$DBUSER
,
$DBPASS
);
if
(!
$CONNECT
)
{
echo
'MySQL Error: '
.mysql_error();
}
$SELECT
= mysql_select_db(
$DBNAME
);
if
(!
$SELECT
)
{
echo
'MySQL Error: '
.mysql_error();
}
?>
|
使用下面的 PHP 代碼片斷能夠在一個目錄中列出全部文件和文件夾
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
function
list_files(
$dir
)
{
if
(
is_dir
(
$dir
))
{
if
(
$handle
= opendir(
$dir
))
{
while
((
$file
= readdir(
$handle
)) !== false)
{
if
(
$file
!=
"."
&&
$file
!=
".."
&&
$file
!=
"Thumbs.db"
/*pesky windows, images..*/
)
{
echo
'<a target="_blank" href="'
.
$dir
.
$file
.
'">'
.
$file
.
'</a><br>'
.
"\n"
;
}
}
closedir
(
$handle
);
}
}
}
|
語法:
1
2
3
|
<?php
list_files(
"images/"
);
//This will list all files of images folder
?>
|
使用下面的 PHP 代碼片斷能夠檢測用戶瀏覽器所使用的語言
1
2
3
4
5
6
7
8
9
10
11
12
|
function
get_client_language(
$availableLanguages
,
$default
=
'en'
){
if
(isset(
$_SERVER
[
'HTTP_ACCEPT_LANGUAGE'
])) {
$langs
=
explode
(
','
,
$_SERVER
[
'HTTP_ACCEPT_LANGUAGE'
]);
foreach
(
$langs
as
$value
){
$choice
=
substr
(
$value
,0,2);
if
(in_array(
$choice
,
$availableLanguages
)){
return
$choice
;
}
}
}
return
$default
;
}
|
1
2
3
4
5
6
7
8
|
function
readCSV(
$csvFile
){
$file_handle
=
fopen
(
$csvFile
,
'r'
);
while
(!
feof
(
$file_handle
) ) {
$line_of_text
[] =
fgetcsv
(
$file_handle
, 1024);
}
fclose(
$file_handle
);
return
$line_of_text
;
}
|
語法:
1
2
3
4
5
|
<?php
$csvFile
=
"test.csv"
;
$csv
= readCSV(
$csvFile
);
$a
= csv[0][0];
// This will get value of Column 1 & Row 1
?>
|
1
2
3
4
5
6
7
8
9
10
11
12
|
function
generateCsv(
$data
,
$delimiter
=
','
,
$enclosure
=
'"'
) {
$handle
=
fopen
(
'php://temp'
,
'r+'
);
foreach
(
$data
as
$line
) {
fputcsv
(
$handle
,
$line
,
$delimiter
,
$enclosure
);
}
rewind
(
$handle
);
while
(!
feof
(
$handle
)) {
$contents
.=
fread
(
$handle
, 8192);
}
fclose(
$handle
);
return
$contents
;
}
|
語法:
1
2
3
4
5
|
<?php
$data
[0] =
"apple"
;
$data
[1] =
"oranges"
;
generateCsv(
$data
,
$delimiter
=
','
,
$enclosure
=
'"'
);
?>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
$xml_string
="<?xml version=
'1.0'
?>
<moleculedb>
<molecule name=
'Benzine'
>
<symbol>ben</symbol>
<code>A</code>
</molecule>
<molecule name=
'Water'
>
<symbol>h2o</symbol>
<code>K</code>
</molecule>
</moleculedb>";
//load the xml string using simplexml function
$xml
= simplexml_load_string(
$xml_string
);
//loop through the each node of molecule
foreach
(
$xml
->molecule
as
$record
)
{
//attribute are accessted by
echo
$record
[
'name'
],
' '
;
//node are accessted by -> operator
echo
$record
->symbol,
' '
;
echo
$record
->code,
'<br />'
;
}
|
1
2
3
4
5
|
$json_string
=
'{"id":1,"name":"rolf","country":"russia","office":["google","oracle"]} '
;
$obj
=json_decode(
$json_string
);
//print the parsed data
echo
$obj
->name;
//displays rolf
echo
$obj
->office[0];
//displays google
|
這個 PHP 片斷能夠幫助你讓用戶登陸後直接跳轉到以前瀏覽的頁面
1
2
3
4
5
6
|
function
current_url()
{
$url
=
"http://"
.
$_SERVER
[
'HTTP_HOST'
] .
$_SERVER
[
'REQUEST_URI'
];
$validURL
=
str_replace
(
"&"
,
"&"
,
$url
);
return
validURL;
}
|
語法:
1
2
3
|
<?php
echo
"Currently you are on: "
.current_url();
?>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
function
my_twitter(
$username
)
{
$no_of_tweets
= 1;
$feed
=
"http://search.twitter.com/search.atom?q=from:"
.
$username
.
"&rpp="
.
$no_of_tweets
;
$xml
= simplexml_load_file(
$feed
);
foreach
(
$xml
->children()
as
$child
) {
foreach
(
$child
as
$value
) {
if
(
$value
->getName() ==
"link"
)
$link
=
$value
[
'href'
];
if
(
$value
->getName() ==
"content"
) {
$content
=
$value
.
""
;
echo
'<p class="twit">'
.
$content
.
' <a class="twt" href="'
.
$link
.
'" title=""> </a></p>'
;
}
}
}
}
|
語法:
1
2
3
4
|
<?php
$handle
=
"koonktech"
;
my_twitter(
$handle
);
?>
|
使用這個 PHP 片斷能夠檢測你的頁面 URL 有多少轉發數量
1
2
3
4
5
6
7
8
9
10
|
function
tweetCount(
$url
) {
$content
=
file_get_contents
(
"http://api.tweetmeme.com/url_info?url="
.
$url
);
$element
=
new
SimpleXmlElement(
$content
);
$retweets
=
$element
->story->url_count;
if
(
$retweets
){
return
$retweets
;
}
else
{
return
0;
}
}
|
語法:
1
2
3
4
5
|
<?php
$url
=
"http://blog.koonk.com"
;
$count
= tweetCount(
$url
);
return
$count
;
?>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
<?php
$date1
=
date
(
'Y-m-d'
);
$date2
=
"2015-12-04"
;
$diff
=
abs
(
strtotime
(
$date2
) -
strtotime
(
$date1
));
$years
=
floor
(
$diff
/ (365*60*60*24));
$months
=
floor
((
$diff
-
$years
* 365*60*60*24) / (30*60*60*24));
$days
=
floor
((
$diff
-
$years
* 365*60*60*24 -
$months
*30*60*60*24)/ (60*60*24));
printf(
"%d years, %d months, %d days\n"
,
$years
,
$months
,
$days
);
-------------------------------------------------------- OR
$date1
=
new
DateTime(
"2007-03-24"
);
$date2
=
new
DateTime(
"2009-06-26"
);
$interval
=
$date1
->diff(
$date2
);
echo
"difference "
.
$interval
->y .
" years, "
.
$interval
->m.
" months, "
.
$interval
->d.
" days "
;
// shows the total amount of days (not divided into years, months and days like above)
echo
"difference "
.
$interval
->days .
" days "
;
-------------------------------------------------------- OR
/**
* Calculate differences between two dates with precise semantics. Based on PHPs DateTime::diff()
* implementation by Derick Rethans. Ported to PHP by Emil H, 2011-05-02. No rights reserved.
*
* See here for original code:
* http://svn.php.net/viewvc/php/php-src/trunk/ext/date/lib/tm2unixtime.c?revision=302890&view=markup
* http://svn.php.net/viewvc/php/php-src/trunk/ext/date/lib/interval.c?revision=298973&view=markup
*/
function
_date_range_limit(
$start
,
$end
,
$adj
,
$a
,
$b
,
$result
)
{
if
(
$result
[
$a
] <
$start
) {
$result
[
$b
] -=
intval
((
$start
-
$result
[
$a
] - 1) /
$adj
) + 1;
$result
[
$a
] +=
$adj
*
intval
((
$start
-
$result
[
$a
] - 1) /
$adj
+ 1);
}
if
(
$result
[
$a
] >=
$end
) {
$result
[
$b
] +=
intval
(
$result
[
$a
] /
$adj
);
$result
[
$a
] -=
$adj
*
intval
(
$result
[
$a
] /
$adj
);
}
return
$result
;
}
function
_date_range_limit_days(
$base
,
$result
)
{
$days_in_month_leap
=
array
(31, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
$days_in_month
=
array
(31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
_date_range_limit(1, 13, 12,
"m"
,
"y"
, &
$base
);
$year
=
$base
[
"y"
];
$month
=
$base
[
"m"
];
if
(!
$result
[
"invert"
]) {
while
(
$result
[
"d"
] < 0) {
$month
--;
if
(
$month
< 1) {
$month
+= 12;
$year
--;
}
$leapyear
=
$year
% 400 == 0 || (
$year
% 100 != 0 &&
$year
% 4 == 0);
$days
=
$leapyear
?
$days_in_month_leap
[
$month
] :
$days_in_month
[
$month
];
$result
[
"d"
] +=
$days
;
$result
[
"m"
]--;
}
}
else
{
while
(
$result
[
"d"
] < 0) {
$leapyear
=
$year
% 400 == 0 || (
$year
% 100 != 0 &&
$year
% 4 == 0);
$days
=
$leapyear
?
$days_in_month_leap
[
$month
] :
$days_in_month
[
$month
];
$result
[
"d"
] +=
$days
;
$result
[
"m"
]--;
$month
++;
if
(
$month
> 12) {
$month
-= 12;
$year
++;
}
}
}
return
$result
;
}
function
_date_normalize(
$base
,
$result
)
{
$result
= _date_range_limit(0, 60, 60,
"s"
,
"i"
,
$result
);
$result
= _date_range_limit(0, 60, 60,
"i"
,
"h"
,
$result
);
$result
= _date_range_limit(0, 24, 24,
"h"
,
"d"
,
$result
);
$result
= _date_range_limit(0, 12, 12,
"m"
,
"y"
,
$result
);
$result
= _date_range_limit_days(&
$base
, &
$result
);
$result
= _date_range_limit(0, 12, 12,
"m"
,
"y"
,
$result
);
return
$result
;
}
/**
* Accepts two unix timestamps.
*/
function
_date_diff(
$one
,
$two
)
{
$invert
= false;
if
(
$one
>
$two
) {
list(
$one
,
$two
) =
array
(
$two
,
$one
);
$invert
= true;
}
$key
=
array
(
"y"
,
"m"
,
"d"
,
"h"
,
"i"
,
"s"
);
$a
=
array_combine
(
$key
,
array_map
(
"intval"
,
explode
(
" "
,
date
(
"Y m d H i s"
,
$one
))));
$b
=
array_combine
(
$key
,
array_map
(
"intval"
,
explode
(
" "
,
date
(
"Y m d H i s"
,
$two
))));
$result
=
array
();
$result
[
"y"
] =
$b
[
"y"
] -
$a
[
"y"
];
$result
[
"m"
] =
$b
[
"m"
] -
$a
[
"m"
];
$result
[
"d"
] =
$b
[
"d"
] -
$a
[
"d"
];
$result
[
"h"
] =
$b
[
"h"
] -
$a
[
"h"
];
$result
[
"i"
] =
$b
[
"i"
] -
$a
[
"i"
];
$result
[
"s"
] =
$b
[
"s"
] -
$a
[
"s"
];
$result
[
"invert"
] =
$invert
? 1 : 0;
$result
[
"days"
] =
intval
(
abs
((
$one
-
$two
)/86400));
if
(
$invert
) {
_date_normalize(&
$a
, &
$result
);
}
else
{
_date_normalize(&
$b
, &
$result
);
}
return
$result
;
}
$date
=
"2014-12-04 19:37:22"
;
echo
'<pre>'
;
print_r( _date_diff(
strtotime
(
$date
), time() ) );
echo
'</pre>'
;
?>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
function
Delete
(
$path
)
{
if
(
is_dir
(
$path
) === true)
{
$files
=
array_diff
(scandir(
$path
),
array
(
'.'
,
'..'
));
foreach
(
$files
as
$file
)
{
Delete
(
realpath
(
$path
) .
'/'
.
$file
);
}
return
rmdir
(
$path
);
}
else
if
(
is_file
(
$path
) === true)
{
return
unlink(
$path
);
}
return
false;
}
|
語法:
1
2
3
4
|
<?php
$path
=
"images/"
;
Delete
(
$path
);
// This will delete images folder along with its contents.
?>
|
1
2
3
4
5
6
7
8
9
10
11
|
function
highlighter_text(
$text
,
$words
)
{
$split_words
=
explode
(
" "
,
$words
);
foreach
(
$split_words
as
$word
)
{
$color
=
"#4285F4"
;
$text
= preg_replace(
"|($word)|Ui"
,
"<span style=\"color:"
.
$color
.
";\"><b>$1</b></span>"
,
$text
);
}
return
$text
;
}
|
語法:
1
2
3
4
5
|
<?php
$string
=
"I like chocolates and I like apples"
;
$words
=
"apple"
;
echo
highlighter_text(
$string
,
$words
);
?>
|
1
2
3
4
5
6
7
8
9
|
<?
$filename
=
'blog.csv'
;
$fp
=
fopen
(
$filename
,
'w'
);
$output
=
" Hello "
;
$output
.=
" World! "
;
$output
.=
"\r\n"
;
fputs
(
$fp
,
$output
);
fclose(
$fp
);
?>
|
1
2
3
4
5
6
7
8
9
10
11
12
|
function
imagefromURL(
$image
,
$rename
)
{
$ch
= curl_init(
$image
);
curl_setopt(
$ch
, CURLOPT_HEADER, 0);
curl_setopt(
$ch
, CURLOPT_RETURNTRANSFER, 1);
curl_setopt(
$ch
, CURLOPT_BINARYTRANSFER,1);
$rawdata
=curl_exec (
$ch
);
curl_close (
$ch
);
$fp
=
fopen
(
"$rename"
,
'w'
);
fwrite(
$fp
,
$rawdata
);
fclose(
$fp
);
}
|
語法:
1
2
3
4
5
|
<?php
$url
=
"http://koonk.com/images/logo.png"
;
$rename
=
"koonk.png"
;
imagefromURL(
$url
,
$rename
);
?>
|
1
2
3
4
5
6
7
8
|
function
isvalidURL(
$url
)
{
$check
= 0;
if
(filter_var(
$url
, FILTER_VALIDATE_URL) !== false) {
$check
= 1;
}
return
$check
;
}
|
語法:
1
2
3
4
5
|
<?php
$url
=
"http://koonk.com"
;
$check
= checkvalidURL(
$url
);
echo
$check
;
//if returns 1 then URL is valid.
?>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
function
qr_code(
$data
,
$type
=
"TXT"
,
$size
=
'150'
,
$ec
=
'L'
,
$margin
=
'0'
)
{
$types
=
array
(
"URL"
=-->
"http://"
,
"TEL"
=>
"TEL:"
,
"TXT"
=>
""
,
"EMAIL"
=>
"MAILTO:"
);
if
(!in_array(
$type
,
array
(
"URL"
,
"TEL"
,
"TXT"
,
"EMAIL"
)))
{
$type
=
"TXT"
;
}
if
(!preg_match(
'/^'
.
$types
[
$type
].
'/'
,
$data
))
{
$data
=
str_replace
(
"\\"
,
""
,
$types
[
$type
]).
$data
;
}
$ch
= curl_init();
$data
= urlencode(
$data
);
curl_setopt(
$ch
, CURLOPT_URL,
'http://chart.apis.google.com/chart'
);
curl_setopt(
$ch
, CURLOPT_POST, true);
curl_setopt(
$ch
, CURLOPT_POSTFIELDS,
'chs='
.
$size
.
'x'
.
$size
.
'&cht=qr&chld='
.
$ec
.
'|'
.
$margin
.
'&chl='
.
$data
);
curl_setopt(
$ch
, CURLOPT_RETURNTRANSFER, true);
curl_setopt(
$ch
, CURLOPT_HEADER, false);
curl_setopt(
$ch
, CURLOPT_TIMEOUT, 30);
$response
= curl_exec(
$ch
);
curl_close(
$ch
);
return
$response
;
}
|
語法:
1
2
3
4
|
<?php
header(
"Content-type: image/png"
);
echo
qr_code(
"http://koonk.com"
,
"URL"
);
?>
|
1
2
3
4
5
6
7
8
9
10
11
12
|
function
getDistanceBetweenPointsNew(
$latitude1
,
$longitude1
,
$latitude2
,
$longitude2
) {
$theta
=
$longitude1
-
$longitude2
;
$miles
= (sin(
deg2rad
(
$latitude1
)) * sin(
deg2rad
(
$latitude2
))) + (
cos
(
deg2rad
(
$latitude1
)) *
cos
(
deg2rad
(
$latitude2
)) *
cos
(
deg2rad
(
$theta
)));
$miles
=
acos
(
$miles
);
$miles
= rad2deg(
$miles
);
$miles
=
$miles
* 60 * 1.1515;
$feet
=
$miles
* 5280;
$yards
=
$feet
/ 3;
$kilometers
=
$miles
* 1.609344;
$meters
=
$kilometers
* 1000;
return
compact(
'miles'
,
'feet'
,
'yards'
,
'kilometers'
,
'meters'
);
}
|
語法:
1
2
3
4
5
6
7
8
|
<?php
$point1
=
array
(
'lat'
=> 40.770623,
'long'
=> -73.964367);
$point2
=
array
(
'lat'
=> 40.758224,
'long'
=> -73.917404);
$distance
= getDistanceBetweenPointsNew(
$point1
[
'lat'
],
$point1
[
'long'
],
$point2
[
'lat'
],
$point2
[
'long'
]);
foreach
(
$distance
as
$unit
=>
$value
) {
echo
$unit
.
': '
.number_format(
$value
,4).
'<br />'
;
}
?>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
function
getTweets(
$hash_tag
) {
$url
=
'http://search.twitter.com/search.atom?q='
.urlencode(
$hash_tag
) ;
echo
"<p>Connecting to <strong>$url</strong> ...</p>"
;
$ch
= curl_init(
$url
);
curl_setopt (
$ch
, CURLOPT_RETURNTRANSFER, TRUE);
$xml
= curl_exec (
$ch
);
curl_close (
$ch
);
//If you want to see the response from Twitter, uncomment this next part out:
//echo "<p>Response:</p>";
//echo "<pre>".htmlspecialchars($xml)."</pre>";
$affected
= 0;
$twelement
=
new
SimpleXMLElement(
$xml
);
foreach
(
$twelement
->entry
as
$entry
) {
$text
= trim(
$entry
->title);
$author
= trim(
$entry
->author->name);
$time
=
strtotime
(
$entry
->published);
$id
=
$entry
->id;
echo
"<p>Tweet from "
.
$author
.
": <strong>"
.
$text
.
"</strong> <em>Posted "
.
date
(
'n/j/y g:i a'
,
$time
).
"</em></p>"
;
}
return
true ;
}
|
Friday the 13th
1
2
3
4
5
6
7
|
function
ordinal(
$cdnl
){
$test_c
=
abs
(
$cdnl
) % 10;
$ext
= ((
abs
(
$cdnl
) %100 < 21 &&
abs
(
$cdnl
) %100 > 4) ?
'th'
: ((
$test_c
< 4) ? (
$test_c
< 3) ? (
$test_c
< 2) ? (
$test_c
< 1)
?
'th'
:
'st'
:
'nd'
:
'rd'
:
'th'
));
return
$cdnl
.
$ext
;
}
|
語法:
1
2
3
4
|
<?php
$number
= 10;
echo
ordinal(
$number
);
//output is 10th
?>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
<?php
// local file that should be send to the client
$local_file
=
'test-file.zip'
;
// filename that the user gets as default
$download_file
=
'your-download-name.zip'
;
// set the download rate limit (=> 20,5 kb/s)
$download_rate
= 20.5;
if
(
file_exists
(
$local_file
) &&
is_file
(
$local_file
)) {
// send headers
header(
'Cache-control: private'
);
header(
'Content-Type: application/octet-stream'
);
header(
'Content-Length: '
.
filesize
(
$local_file
));
header(
'Content-Disposition: filename='
.
$download_file
);
// flush content
flush
();
// open file stream
$file
=
fopen
(
$local_file
,
"r"
);
while
(!
feof
(
$file
)) {
// send the current file part to the browser
print
fread
(
$file
,
round
(
$download_rate
* 1024));
// flush the content to the browser
flush
();
// sleep one second
sleep(1);
}
// close file stream
fclose(
$file
);}
else
{
die
(
'Error: The file '
.
$local_file
.
' does not exist!'
);
}
?>
|
1
2
3
4
5
6
7
8
9
10
11
12
|
<?php
header(
"Content-type: image/png"
);
$string
=
$_GET
[
'text'
];
$im
= imagecreatefrompng(
"images/button.png"
);
$color
= imagecolorallocate(
$im
, 255, 255, 255);
$px
= (imagesx(
$im
) - 7.5 *
strlen
(
$string
)) / 2;
$py
= 9;
$fontSize
= 1;
imagestring(
$im
, fontSize,
$px
,
$py
,
$string
,
$color
);
imagepng(
$im
);
imagedestroy(
$im
);
?>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
function
remote_filesize(
$url
,
$user
=
""
,
$pw
=
""
)
{
ob_start();
$ch
= curl_init(
$url
);
curl_setopt(
$ch
, CURLOPT_HEADER, 1);
curl_setopt(
$ch
, CURLOPT_NOBODY, 1);
if
(!
empty
(
$user
) && !
empty
(
$pw
))
{
$headers
=
array
(
'Authorization: Basic '
.
base64_encode
(
"$user:$pw"
));
curl_setopt(
$ch
, CURLOPT_HTTPHEADER,
$headers
);
}
$ok
= curl_exec(
$ch
);
curl_close(
$ch
);
$head
= ob_get_contents();
ob_end_clean();
$regex
=
'/Content-Length:\s([0-9].+?)\s/'
;
$count
= preg_match(
$regex
,
$head
,
$matches
);
return
isset(
$matches
[1]) ?
$matches
[1] :
"unknown"
;
}
|
語法:
1
2
3
4
5
|
<?php
$file
=
"http://koonk.com/images/logo.png"
;
$size
= remote_filesize(
$url
);
echo
$size
;
?>
|
1
2
3
4
5
6
7
8
9
10
|
<?php
$pdf_file
=
'./pdf/demo.pdf'
;
$save_to
=
'./jpg/demo.jpg'
;
//make sure that apache has permissions to write in this folder! (common problem)
//execute ImageMagick command 'convert' and convert PDF to JPG with applied settings
exec
(
'convert "'
.
$pdf_file
.
'" -colorspace RGB -resize 800 "'
.
$save_to
.
'"'
,
$output
,
$return_var
);
if
(
$return_var
== 0) {
//if exec successfuly converted pdf to jpg
print
"Conversion OK"
;
}
else
print
"Conversion failed.<br />"
.
$output
;
?>
|
1
2
3
4
5
6
7
8
9
10
11
|
function
get_tiny_url(
$url
)
{
$ch
= curl_init();
$timeout
= 5;
curl_setopt(
$ch
,CURLOPT_URL,
'http://tinyurl.com/api-create.php?url='
.
$url
);
curl_setopt(
$ch
,CURLOPT_RETURNTRANSFER,1);
curl_setopt(
$ch
,CURLOPT_CONNECTTIMEOUT,
$timeout
);
$data
= curl_exec(
$ch
);
curl_close(
$ch
);
return
$data
;
}
|
語法:
1
2
3
4
5
|
<?php
$url
=
"http://blog.koonk.com/2015/07/Hello-World"
;
$tinyurl
= get_tiny_url(
$url
);
echo
$tinyurl
;
?>
|
使用下面的 PHP 片斷可讓你的用戶下載 Youtube 視頻
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
function
str_between(
$string
,
$start
,
$end
)
{
$string
=
" "
.
$string
;
$ini
=
strpos
(
$string
,
$start
);
if
(
$ini
== 0)
return
""
;
$ini
+=
strlen
(
$start
);
$len
=
strpos
(
$string
,
$end
,
$ini
) -
$ini
;
return
substr
(
$string
,
$ini
,
$len
); }
function
get_youtube_download_link(){
$youtube_link
=
$_GET
[
'youtube'
];
$youtube_page
=
file_get_contents
(
$youtube_link
);
$v_id
= str_between(
$youtube_page
,
"&video_id="
,
"&"
);
$t_id
= str_between(
$youtube_page
,
"&t="
,
"&"
);
$flv_link
=
"http://www.youtube.com/get_video?video_id=$v_id&t=$t_id"
;
$hq_flv_link
=
"http://www.youtube.com/get_video?video_id=$v_id&t=$t_id&fmt=6"
;
$mp4_link
=
"http://www.youtube.com/get_video?video_id=$v_id&t=$t_id&fmt=18"
;
$threegp_link
=
"http://www.youtube.com/get_video?video_id=$v_id&t=$t_id&fmt=17"
;
echo
"\t\tDownload (right-click > save as):\n\t\t"
;
echo
"<a href=\"$flv_link\">FLV</a>\n\t\t"
;
echo
"<a href=\"$hq_flv_link\">HQ FLV (if available)</a>\n\t\t"
;
echo
"<a href=\"$mp4_link\">MP4</a>\n\t\t"
;
echo
"<a href=\"$threegp_link\">3GP</a><br><br>\n"
;
}
|
Facebook (x mins age, y hours ago etc)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
function
nicetime(
$date
)
{
if
(
empty
(
$date
)) {
return
"No date provided"
;
}
$periods
=
array
(
"second"
,
"minute"
,
"hour"
,
"day"
,
"week"
,
"month"
,
"year"
,
"decade"
);
$lengths
=
array
(
"60"
,
"60"
,
"24"
,
"7"
,
"4.35"
,
"12"
,
"10"
);
$now
= time();
$unix_date
=
strtotime
(
$date
);
// check validity of date
if
(
empty
(
$unix_date
)) {
return
"Bad date"
;
}
// is it future date or past date
if
(
$now
>
$unix_date
) {
$difference
=
$now
-
$unix_date
;
$tense
=
"ago"
;
}
else
{
$difference
=
$unix_date
-
$now
;
$tense
=
"from now"
;
}
for
(
$j
= 0;
$difference
>=
$lengths
[
$j
] &&
$j
<
count
(
$lengths
)-1;
$j
++) {
$difference
/=
$lengths
[
$j
];
}
$difference
=
round
(
$difference
);
if
(
$difference
!= 1) {
$periods
[
$j
].=
"s"
;
}
return
"$difference $periods[$j] {$tense}"
;
}
|
語法:
1
2
3
4
|
<?php
$date
=
"2015-07-05 03:45"
;
$result
= nicetime(
$date
);
// 2 days ago
?>
|
via blog.koonk.com