ホームページ >バックエンド開発 >PHPチュートリアル >超実践的な PHP コード スニペット、_PHP チュートリアル
メールを送信するとき、そのメールが相手に読まれたかどうか知りたい場合があります。これは、相手の IP アドレスによってレコードが読み取られた実際の日付と時刻を表示する非常に興味深いコードのスニペットです。
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 |
<?
error_reporting (0);
Header( "Content-Type: image/jpeg" );
//Get IP
if (! empty ( $_SERVER [ 'HTTP_CLIENT_IP' ]))
{
$ip = $_SERVER [ 'HTTP_CLIENT_IP' ];
}
elseif (! empty ( $_SERVER [ 'HTTP_X_FORWARDED_FOR' ]))
{
$ip = $_SERVER [ 'HTTP_X_FORWARDED_FOR' ];
}
else
{
$ip = $_SERVER [ 'REMOTE_ADDR' ];
}
//時間<code class="php comments">//Time
$actual_time<code class="php variable">$actual_time = time(); = time();<code class="php variable">$actual_day = date ( 'Y.m.d' , $actual_time );
$actual_day<code class="php variable">$actual_day_chart = date ( 'd/m/y' , $actual_time ); = <code class="php variable">$actual_hour = date ( 'H:i:s' , $actual_time ); date<code class="php comments">//GET Browser (<code class="php variable">$browser = $_SERVER [ 'HTTP_USER_AGENT' ]; 'Y.m.d'<code class="php spaces"> , <code class="php comments">//LOG $actual_time<code class="php variable">$myFile = "log.txt" ; );<code class="php variable">$fh = fopen ( $myFile , 'a+' );
$actual_day_chart<code class="php variable">$stringData = $actual_day . ' ' . $actual_hour . ' ' . $ip . ' ' . $browser . ' ' . "rn" ; = <code class="php plain">fwrite( $fh , $stringData ); date<code class="php plain">fclose( $fh ); (<code class="php comments">//Generate Image (Es. dimesion is 1x1) 'd/m/y'<code class="php variable">$newimage = ImageCreate(1,1); , <code class="php variable">$grigio = ImageColorAllocate( $newimage ,255,255,255); $actual_time<code class="php plain">ImageJPEG( $newimage ); );<code class="php plain">ImageDestroy( $newimage );
$actual_hour<code class="php spaces"> = <code class="php plain">?> date
|
$actual_time🎜);🎜
//ブラウザを取得🎜
$browser🎜 = 🎜$_SERVER🎜[🎜'HTTP_USER_AGENT'🎜];🎜
🎜
//LOG🎜
$myFile🎜 = 🎜"log.txt"🎜;🎜
$fh🎜 = 🎜fopen🎜(🎜$myFile🎜, 🎜'a+'🎜);🎜
$stringData🎜 = 🎜$actual_day🎜 。 🎜' '🎜 。 🎜$actual_hour🎜 。 🎜' '🎜 。 🎜$ip🎜 。 🎜' '🎜 。 🎜$browser🎜 。 🎜' '🎜 。 🎜"rn"🎜;🎜
fwrite(🎜$fh🎜, 🎜$stringData🎜);🎜
fclose(🎜$fh🎜);🎜
//画像を生成 (寸法は 1x1)🎜
$newimage🎜 = ImageCreate(1,1);🎜
$grigio🎜 = ImageColorAllocate(🎜$newimage🎜,255,255,255); 🎜
ImageJPEG(🎜$newimage🎜);🎜
ImageDestroy(🎜$newimage🎜);🎜
🎜
?>🎜
🎜
🎜
🎜
🎜ソースコード
2. ネットユーザーからキーワードを抽出します
優れたコードスニペットを使用すると、Webページからキーワードを簡単に抽出できます。
1
2
3
4
5
6
7
8
9
10
$meta
= get_meta_tags(
'http://www.emoticode.net/'
);
$keywords
=
$meta
[
'keywords'
];
// Split keywords
$keywords
=
explode
(
','
,
$keywords
);
// Trim them
$keywords
=
array_map
(
'trim'
,
$keywords
);
// Remove empty values
$keywords
=
array_filter
(
$keywords
);
print_r(
$keywords
);
ソースコード
3. ページ上のすべてのリンクを検索します
DOM を使用すると、任意のページから簡単にリンクを取得できます。コード例は次のとおりです。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$html
=
file_get_contents
(
'http://www.example.com'
);
$dom
=
new
DOMDocument();
@
$dom
->loadHTML(
$html
);
// grab all the on the page
$xpath
=
new
DOMXPath(
$dom
);
$hrefs
=
$xpath
->evaluate(
"/html/body//a"
);
for
(
$i
= 0;
$i
<
$hrefs
->length;
$i
++) {
$href
=
$hrefs
->item(
$i
);
$url
=
$href
->getAttribute(
'href'
);
echo
$url
.
'<br />'
;
}
ソースコード
4. URLを自動変換してハイパーリンクにジャンプします
WordPress では、URL を自動的に変換してハイパーリンクされたページにジャンプしたい場合、組み込み関数 make_clickable() を使用してこの操作を実行できます。 WordPress の外部でプログラムを操作したい場合は、wp-includes/formatting.php ソース コードを参照できます。
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
function
_make_url_clickable_cb(
$matches
) {
$ret
=
''
;
$url
=
$matches
[2];
if
(
empty
(
$url
) )
return
$matches
[0];
// removed trailing [.,;:] from URL
if
( in_array(
substr
(
$url
, -1),
array
(
'.'
,
','
,
';'
,
':'
)) === true ) {
$ret
=
substr
(
$url
, -1);
$url
=
substr
(
$url
, 0,
strlen
(
$url
)-1);
}
return
$matches
[1] .
"<a href="$url" rel="nofollow">$url</a>"
.
$ret
;
}
<code class="php spaces">
function<code class="php keyword">function
_make_web_ftp_clickable_cb(
$matches
) {
<code class="php spaces"> $ret
=
''
;
_make_web_ftp_clickable_cb(
$dest
=
$matches
[2];
$matches<code class="php spaces">
$dest
=
'http://'
.
$dest
;
) {<code class="php spaces"> if
(
empty
(
$dest
) )
<code class="php spaces">
return
$matches
[0];
$ret<code class="php spaces">
// removed trailing [,;:] from URL
<code class="php spaces"> if
( in_array(
substr
(
$dest
, -1),
array
(
'.'
,
','
,
';'
,
':'
)) === true ) {
= <code class="php spaces"> $ret
=
substr
(
$dest
, -1);
''<code class="php spaces">
$dest
=
substr
(
$dest
, 0,
strlen
(
$dest
)-1);
}
;<code class="php spaces"> return
$matches
[1] .
"<a href="$dest" rel="nofollow">$dest</a>"
.
$ret
;
<code class="php plain">}
$dest<code class="php spaces">
function
_make_email_clickable_cb(
$matches
) {
= <code class="php spaces"> $email
=
$matches
[2] .
'@'
.
$matches
[3];
$matches<code class="php spaces">
return
$matches
[1] .
"<a href="mailto:$email">$email</a>"
;
[2];🎜
🎜$dest🎜 🎜= 🎜'http://'🎜 🎜。 🎜$dest🎜🎜;🎜
🎜
🎜if🎜 🎜( 🎜empty🎜🎜(🎜$dest🎜) 🎜))🎜
🎜return🎜 $matches🎜🎜[0];🎜
🎜// URL から末尾の [,;:] を削除しました🎜
🎜if🎜 🎜( in_array(🎜substr🎜🎜(🎜$ dest🎜🎜, -1), 🎜array🎜🎜(🎜'.'🎜🎜, 🎜', '🎜🎜, 🎜';'🎜🎜, 🎜':'🎜🎜)) === true ) {🎜
🎜$ret🎜 🎜= 🎜substr🎜🎜(🎜$dest 🎜🎜、-1);🎜
🎜$dest🎜 🎜= 🎜substr🎜🎜(🎜$dest 🎜🎜, 0, 🎜strlen🎜🎜(🎜$dest🎜🎜)-1);🎜
🎜🎜}🎜
🎜return🎜 $matches🎜🎜[1] 。 🎜"<a href="$dest" rel="nofollow">$dest</a>"🎜 🎜。 🎜$ret🎜🎜;🎜
🎜}🎜
🎜
関数🎜 🎜_make_email_clickable_cb(🎜$matches🎜🎜) {🎜
🎜$email🎜 🎜= 🎜$matches🎜🎜[2] 。 🎜'@'🎜 🎜。 🎜$matches🎜🎜[3];🎜
🎜return🎜 $matches🎜🎜[1] 。 🎜"<a href="mailto:$email">$email</a>"🎜🎜;🎜
🎜}
<code class="php spaces">
function<code class="php keyword">function
make_clickable(
$ret
) {
make_clickable(<code class="php spaces">
$ret
=
' '
.
$ret
;
$ret<code class="php spaces">
// in testing, using arrays here was found to be faster
) {<code class="php spaces">
$ret
= preg_replace_callback(
'#([s>])([w]+?://[w\x80-\xff#$%&~/.-;:=,?@[]+]*)#is'
,
'_make_url_clickable_cb'
,
$ret
);
<code class="php spaces">
$ret
= preg_replace_callback(
'#([s>])((www|ftp).[w\x80-\xff#$%&~/.-;:=,?@[]+]*)#is'
,
'_make_web_ftp_clickable_cb'
,
$ret
);
$ret<code class="php spaces">
$ret
= preg_replace_callback(
'#([s>])([.0-9a-z_+-]+)@(([0-9a-z-]+.)+[0-9a-z]{2,})#i'
,
'_make_email_clickable_cb'
,
$ret
);
= <code class="php spaces">
' '<code class="php spaces">
// this one is not in an array because we need it to run last, for cleanup of accidental links within links
。 <code class="php spaces">
$ret
= preg_replace(
"#(<a( [^>]+?>|>))<a [^>]+?>([^>]+?)</a></a>#i"
,
"</a>"
,
$ret
);
$ret<code class="php spaces">
$ret
= trim(
$ret
);
;<code class="php spaces">
return
$ret
;
<code class="php plain">}
// テストでは、ここで配列を使用した方が速いことが判明しました
$ret
= preg_replace_callback(
'#([s> ])([w]+?://[w\x80-\xff#$%&~/.-;:=,?@[]+]*)#is'<p><code class="php plain">,
'_make_url_clickable_cb'<h3><code class="php plain">,
$ret<p><code class="php plain">);
<table border="0" cellspacing="0" cellpadding="0"><code class="php variable">$ret<tbody> <code class="php plain">= preg_replace_callback(<tr><code class="php string">'#([s> ])((www|ftp).[w\x80-\xff#$%&~/.-;:=,?@[]+]*)#is'<td class="gutter"><code class="php plain">,
'_make_web_ftp_clickable_cb'<td class="code"><code class="php plain">, <code class="php keyword">function
data_uri(
$file
,
$mime
) {
$ret<code class="php spaces">
$contents
=
file_get_contents
(
$file
);
);<code class="php spaces">
$base64
=
base64_encode
(
$contents
);
<code class="php spaces">
echo
"data:$mime;base64,$base64"
;
$ret<code class="php plain">}
= preg_replace_callback(
'#([s> ])([.0-9a-z_+-]+)@(([0-9a-z-]+.)+[0-9a-z]{2,})#i'
、
'_make_email_clickable_cb'
、🎜$ret🎜);🎜
🎜
🎜// これは、リンク内の誤ったリンクをクリーンアップするために最後に実行する必要があるため、配列にはありません🎜
🎜$ret🎜 = preg_replace(🎜"#(]+?>|>))]+?>([^>]+?)#i"🎜 、🎜"$1$3"🎜、🎜 $ret🎜);🎜
🎜$ret🎜 =rim(🎜$ret🎜);🎜
🎜return🎜 $ret🎜;🎜
}🎜
🎜
🎜
🎜
🎜
🎜 ソースコード🎜
🎜 五、创建データURL🎜
🎜 データ URL は、大量の HTTP リクエストを回避するために、HTML/CSS/JS に直接挿入できます。
🎜
🎜
🎜
🎜
1
2
3
4
5
🎜
🎜
function🎜 data_uri(🎜$file🎜, 🎜$mime🎜) {🎜
🎜$contents🎜=🎜file_get_contents🎜(🎜$file🎜);🎜
🎜$base64🎜=🎜base64_encode🎜(🎜$contents🎜);🎜
🎜echo🎜 "data:$mime;base64,$base64"🎜;🎜
}🎜
🎜
🎜
🎜
🎜ソースコード
6.サーバーからリモート画像をダウンロードして保存します
Webサイトを構築する際、リモートサーバーから特定の画像をダウンロードして自分のサーバーに保存するという操作がよく行われます。コードは次のとおりです:
1
2
$image
=
file_get_contents
(
'http://www.url.com/image.jpg'
);
file_put_contents
(
'/images/image.jpg'
,
$image
);
//Where to save the image
ソースコード
7. 削除 Microsoft Word HTML タグを削除します
Microsoft Wordを使用すると、フォント、スパン、スタイル、クラスなど、多くのタグを作成します。これらのタグは Word 自体では非常に便利ですが、Word から Web ページに貼り付けると、無駄なタグがたくさんあることがわかります。したがって、次のコードは、不要な Word HTML タグをすべて削除するのに役立ちます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function
cleanHTML(
$html
) {
/// <summary>
/// Removes all FONT and SPAN tags, and all Class and Style attributes.
/// Designed to get rid of non-standard Microsoft Word HTML tags.
/// </summary>
// start by completely removing all unwanted tags
$html
=
ereg_replace
(
"<(/)?(font|span|del|ins)[^>]*>"
,
""
,
$html
);
// then run another pass over the html (twice), removing unwanted attributes
$html
=
ereg_replace
(
"<([^>]*)(class|lang|style|size|face)=("
[^
"]*"
|
'[^'
]*'|[^>]+)([^>]*)>
","
<1>",
$html
);
$html
=
ereg_replace
(
"<([^>]*)(class|lang|style|size|face)=("
[^
"]*"
|
'[^'
]*'|[^>]+)([^>]*)>
","
<1>",
$html
);
return
$html
}
ソースコード
8. ブラウザ言語を検出します
ウェブサイトに複数の言語がある場合、このコードをデフォルト言語として使用してブラウザ言語を検出できます。このコードは、ブラウザ クライアントが使用する初期言語を返します。
1
2
3
4
5
6
7
8
9
10
11
12
13
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
;
}
ソースコード
9. Facebookのファン数を表示
ウェブサイトやブログに Facebook ページをリンクしている場合、ファンが何人いるかを知りたいと思うかもしれません。このコードは、Facebook のファンの数を確認するのに役立ちます。このコードをページ ID の 2 行目に忘れずに追加してください。
1
2
3
4
5
6
<?php
$page_id
=
"YOUR PAGE-ID"
;
$xml
= @simplexml_load_file(
"http://api.facebook.com/restserver.php?method=facebook.fql.query&query=SELECT%20fan_count%20FROM%20page%20WHERE%20page_id="
.
$page_id
.
""
)
or
die
(
"a lot"
);
$fans
=
$xml
->page->fan_count;
echo
$fans
;
?>
ソースコード
英語出典: Catswhocode