人気ブログランキング |

カテゴリ:PGじゃない人間の備忘録( 37 )

 

ButtonタグでsubmitするとIEでバグるので・・・

例えば
< button type="submit" name="hoge" value="hogehoge">ほげほげ< /button>

とした場合
IE以外では、 $_POST["hoge"] の値が、「hogehoge」とvalue値を持ってきてくれる
しかし、IEでは「ほげほげ」とbuttonに囲まれたテキストを持ってきてしまうのだ。

実質、これを回避する方法は今のところない。

一応、Javascriptでやってみるかと思い、こんな事をしてみた。

< script type="text/javascript">
< !--
function clickButton(val) {
doc ument .getElementById("hoge").value=val;
var tag=do cument.getElementById("formA");
tag.submit();
}
//-->
< /script>

< form method="post" action="list.php" id="formA">
< button type="button" name="hoge" value="hogehoge" on Click="clickButton('hogeA');">ほげほげ< /button>
< input type="hidden" name="hoge" id="hoge">
< /form>



で、ここまで作って気がついたんだけど
Javascriptでsubmitするなら、aタグで問題ない。
結果的にスマートなソースにしたいので、こうなった。


< script type="text/javascript">
< !--
function clickButton(val) {
doc ument .getElementById("hoge").value=val;
var tag=do cument.getElementById("formA");
tag.submit();
}
//-->
< /script>

< form method="post" action="list.php" id="formA">
< a href="j avascript:void(0);" on Click="clickButton('hogeA');">
< a href="j avascript:void(0);" on Click="clickButton('hogeB');">
< a href="j avascript:void(0);" on Click="clickButton('hogeC');">
< input type="hidden" name="hoge" id="hoge">
< /form>


IEのバカっ!

※エキサイトでエラーになるので、ところどころ半角スペースいれています。



by hiro__neko | 2013-04-03 13:36 | PGじゃない人間の備忘録  

誕生日から自動的に年齢を計算したい

結論から書くとこう。

< ?
$birthday = '1993年3月23日';
$now = date('Ymd');
preg_match( "/([0-9]*)年([0-9]*)月([0-9]*)日/", $birthday, $data );
$birth = sprintf( "%04.4d%02.2d%02.2d", $data[1], $data[2], $data[3]);

$age = $now - $birth;
$age = $age/10000;
$age = floor($age);

echo $age;
?>


1.生年月日を取得
2.現在の日付をyyyyMMddで取得
3.生年月日から、数字のみを再セット
4.年齢 = 小数点削除(現在の日付 - 生年月日 / 10000)

で出来ます。

が、、、

PHPで書く時に
$age = floor(($now - $birth)/10000);
と書いたら、2012って数字が帰ってきた。
これは何でだ?


で、年齢の計算式だけど
(現在の日付-生年月日)/10000の小数点以下切捨て。
一個ずつ書くと
20130328 - 19930323 = 200005
つまり、誕生日から5日経過してるわけですね。

200005 / 10000 = 20.0005
で、10000で割ることで、年月日の月日の部分を小数点以下にできます。

floor(20.0005) = 20
最後に、小数点以下を切り捨てます

これで年齢が出せます。
うるう年でも大丈夫ですね^^



by hiro__neko | 2013-03-28 15:55 | PGじゃない人間の備忘録  

年月日を yyyyMMdd に変換したい

< ?
$birthday = '1993年3月23日';
//$birthdayのデータから数字のみを抜き出す
preg_match( "/([0-9]*)年([0-9]*)月([0-9]*)日/", $birthday, $data );
//0パディングして再セット
$birth = sprintf( "%04.4d%02.2d%02.2d", $data[1], $data[2], $data[3]);

echo $birth
?>


結果 19930323

これで誕生日から年齢を計算できます!



by hiro__neko | 2013-03-28 15:34 | PGじゃない人間の備忘録  

文字列からURLを抜き出す

TwitterのXMLを取得して
ホームページに表示するプログラムを以前作ったのだけど
※記事はこちら

お客様から、URLにリンクがないよ?って言われていました。
正規表現でURLを抜き出す事はできるので、ちょっと時間があったので作りました。

でURL抜き出しソースは、ずばり、こうっ!

< ?
$text = '長瀞です http://t.co/sxVghWbjPd';

$urllist = array();

if( preg_match_all('/https?:\/\/[a-zA-Z0-9\-\.\/\?\@&=:~#]+/', $text, $matchs) !== FALSE){
foreach ($matchs[0] as $line){
$urllist[] = $line;
}
}

echo '< a href="'.$urllist[0].'" target="_blank">'.$urllist[0].'< a>';
?>




by hiro__neko | 2013-03-27 18:04 | PGじゃない人間の備忘録  

GMAPって、URLスキーマーなのでXMLで使うの大変だったので

GMAPをウェブサイトに表示したいというお客様がおおいです。
現在、Ver3になり、Gアカウント無しでも使うことができますよね。

僕がウェブサイトを作る場合、XMLにデータを格納して
PHPで吐き出して使います。

ところが、XMLは、HTMLエンティティを使う時にルールが必要なんですね。

URLスキーマの場合、

&を表記する場合は、&amp;と書きます。

簡単なルールなんですが
GMAPのURLスキーマは長すぎて、&を処理するのが面倒くさい。

というわけで変換PGを作りました。

htmlentities.phpで下ソースを保存すればOKです。

htmlentities てのが便利すぎて笑えました^^

< !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
< html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja" dir="ltr">
< head>
< meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
< title>HTMLエンティティコンバーター
< /head>

< ?
if($_POST['mode'] == 'edit'){
$str = htmlentities($_POST['conv']);
}
?>
< body>

< h1>HTMLエンティティコンバーター< /h1>
< br>
< br>
< form action="htmlentities.php" method="post" enctype=multipart/form-data>
< input type="text" value="" name="conv">
< input type="hidden" value="edit" name="mode">
< input type="submit" value="変換">
< /form>

< ?
if($_POST['mode'] == 'edit'){
print '< xmp>'.$str.'< /xmp>';
}
?>

< /body>
< /html>



余談だけど
$str = html_entity_decode($a);
を使えば、HTMLエンティティを記号に治してくれる

PHPって便利だわ



by hiro__neko | 2013-03-22 15:28 | PGじゃない人間の備忘録  

Gmap 英語版で「現在地」

ただの覚書です。

Gmapが便利でよく使います。
Webサイト作っていると、この機能をアクセスマップで使いたいお客様も多いです。

ところが英語サイト対応になると、アクセスマップも英語にしないといけません。
というわけでURLスキームで英語にする方法の覚書です。


仮に新宿都庁の位置を検索します。

下が都庁のURL
https://maps.google.co.jp/maps?q=%E9%83%BD%E5%BA%81&hl=ja&ie=UTF8&sll=35.673343,139.710388&sspn=0.330773,0.591888&brcurrent=3,0x60188cd4ca00eef1:0x88a16ce9397e1993,0&hnear=%E6%9D%B1%E4%BA%AC%E9%83%BD%E6%96%B0%E5%AE%BF%E5%8C%BA+%E9%83%BD%E5%BA%81&t=m&z=15


まぁ一部いらないところもあるわけですが
.co.jp → .com
hl=ja → hl=en

この2箇所を変えると、英語になります。

https://maps.google.com/maps?q=%E9%83%BD%E5%BA%81&hl=en&ie=UTF8&sll=35.673343,139.710388&sspn=0.330773,0.591888&brcurrent=3,0x60188cd4ca00eef1:0x88a16ce9397e1993,0&hnear=%E6%9D%B1%E4%BA%AC%E9%83%BD%E6%96%B0%E5%AE%BF%E5%8C%BA+%E9%83%BD%E5%BA%81&t=m&z=15


で、ここまでで英語にできるわけですが
次は「現在地」からの検索の場合

saddr=現在地

となっているところを

saddr=My Location

にすると良い。


確認方法は、Gmapを英語で開いて、ルート検索するとわかる。

他にもいろいろ覚書しておきたいURLスキームですが
とりあえず、日本語と英語の切り替えと、現在地の英語表記の覚書でした。



by hiro__neko | 2013-03-19 15:04 | PGじゃない人間の備忘録  

PHPで画像情報を取得します備忘録

$info = getimagesize('http://helog.jp/sample.jpg');
if($info){
echo $info[0]; // width
echo $info[1]; //height
}else{
echo 'データの取得に失敗しました';
}

あら簡単\(^o^)/

by hiro__neko | 2013-02-20 12:07 | PGじゃない人間の備忘録  

RSSが簡単につくれるsimplexml_load_fileが便利!

ざっくりとAmebloでRSSを作る場合のソース


< ?
// blogURL
$data = simplexml_load_file("http://rssblog.ameba.jp/(ここにアカウント)/rss.html");
?>

< ?
foreach ($dqnplus->item as $key => $item) {
$date = $item->children('http://purl.org/dc/elements/1.1/')->date;;
$date = date('Y/m/d', strtotime($date));
$title = $item->title;
$link = $item->link;
$notitle = 'PR'; // ここでPRの文字列を指定しておいて、その文字がタイトルにあったら非表示
?>
< ? if(strstr($title, $notitle)){ ?>
< ? }else{ ?>
< ? echo $date ?>< br>
< a href="< ? echo $link ?>" target="_blank">< ? echo $title ?>< /a>
< br>
< ? } ?>
< ? } ?>

こんだけ\(^o^)/

Blogで表示されないから
<? って書いてたりするからコピペだけじゃ使えないし
日付とタイトルとリンクだけだけど
超カンタン\(^o^)/

by hiro__neko | 2013-02-07 12:05 | PGじゃない人間の備忘録  

array_unique だけだと困った事に

PHPの配列で重複した値を取り除きたいときに array_unique を使います。

$places = array(
'渋谷',
'新宿',
'新宿',
'中野',
'渋谷',
'池袋',
);


$places = array_unique($places);

としたあと、
echo count($places);
とすると
表示結果は、4になります。

for文で、中身を確認すると
'渋谷',
'新宿',
'中野',
と表示されます。

あれー?と思って
print_r($places)
で確認したら

Array ( [0] => '渋谷' [1] => '新宿' [3] => '中野' [5] => '池袋' )

ですって、、、

つまり、array_unique は配列の添字(インデックス)を維持してしまうのでした。
結果として、

$places = array_merge(array_unique($places));

とすれば、「入力配列の中にある数値添字要素の添字の数値は、 結果の配列ではゼロから始まる連続した数値に置き換えられます。」

まったく奥が深いです。

by hiro__neko | 2013-02-01 14:14 | PGじゃない人間の備忘録  

PHP1年生が、自動ツイートする、twitterBotを作ったよ その二

前回の続きです。
ホームページ、CRONができたら
いよいよ、TwitterBotとして動くように設定を行います。

TwitterでクライアントやBotなどを使ったり運営していく際、OAuth認証が必要になります。
とりあえずBotが動くように、細かい説明を抜きにしてメモしていきます


TwitterへOAuthクライアントの登録

まずは、こちらのDevelopersにログインします
https://dev.twitter.com/apps

ログイン名は、Botとして使うTwitterのアカウントです。

右側の "Create a new application" をクリック
最低限 "Name"、"Description"、"WebSite" を入力


setting tab を押下したら
Application Type → "Read and Write" にする

これで create token すると
4つのコードが取得できます
・Consumer key
・Consumer secret 
・Access token
・Access token secret

このコードを使って、Twitterに書き込みを処理を行えばOKです。

詳細PGは面倒なので割愛!

by hiro__neko | 2012-12-09 11:55 | PGじゃない人間の備忘録